我希望有一个下拉时间选择保存为字符串但我不断收到以下异常:1个错误分配多参数属性。这是我写的代码:
<%= f.time_select :appointment_time, :minute_step => 5, :ignore_date => true %>
当我提交表单时,我在params hash中获得以下值
"appointment_time(4i)"=>"12", "appointment_time(5i)"=>"00"
有没有办法轻松抓住这两个值并将结果保存为“12:00:00”?
答案 0 :(得分:1)
假设params hash中不仅有约会密钥:
params[:your_model].select {|k,v| k =~ /^appointment_time/ }.
sort.map {|f| f.last.to_s }.join(':')
当然,这也假设表中的appointment_time字段不是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])
这可能更符合您的要求。
答案 1 :(得分:0)
我通过为每个时间值创建不同的列作为字符串,然后在创建后将所有内容连接在一起来解决我的问题。这不是最优雅的解决方案,但它适用于我的应用程序