1

我想要一个保存为字符串的下拉时间选择,但我不断收到以下异常:1 error(s) on assignment of multiparameter attributes。这是我编写的代码:

<%= f.time_select :appointment_time, :minute_step => 5, :ignore_date => true %>

当我提交表单时,我在 params 哈希中得到以下值

"appointment_time(4i)"=>"12", "appointment_time(5i)"=>"00" 

有什么方法可以轻松获取这两个值并将结果保存为“12:00:00”?

4

2 回答 2

2

假设 params 哈希中不仅仅是约会键:

params[:your_model].select {|k,v| k =~ /^appointment_time/ }.
  sort.map {|f| f.last.to_s }.join(':')

当然,这也假设您的表中的约会时间字段不是 DateTime 或 Date 字段。您必须在更新(假定的)ActiveRecord 模型实例的属性之前执行此操作。有更简单的方法可以做到这一点,但是如果没有看到代码和回溯,就很难知道它们是否有效。

编辑

processed = params.dup
processed[:your_model][:appointment_time] = params[:your_model].
  select {|k,v| k =~ /^appointment_time/ }.sort.map {|f| f.last.to_s}.join(':')
@model.update_params(processed[:your_model])

这可能更符合您正在寻找的内容。

于 2012-05-18T22:45:29.990 回答
0

我通过为每个时间值创建不同的列作为字符串解决了我的问题,然后在创建后将所有内容连接在一起。这不是最优雅的解决方案,但它适用于我的应用程序

于 2012-05-22T20:12:18.170 回答