time_select helper和Time对象创建

时间:2014-01-17 05:47:57

标签: ruby-on-rails

有以下代码:

  .row
    = f.label       :start_time
    = time_select :model, :start_time, { minute_step: 30 }
  .row
    = f.label           :end_time
    = time_select :model, :end_time, { minute_step: 30 }

time_select为每个副本生成2个选择(1个小时,1个小时)。因此,我们使用'start_time(1i)',''start_time(5i)'字段(对于end_time来说相同)在params中“建模”哈希。我有以下问题:

  1. 如何从此哈希创建新的Time对象?
  2. 是否可以为每个time_select创建一个选择?
  3. 由于

2 个答案:

答案 0 :(得分:2)

如何从此哈希创建新的Time对象?

你可以让Rails为你工作:

= f.time_select(:start_time, minute_step: 30)

当您在控制器中调用模型上的update_attributes时,Rails将创建Time对象并将其分配给模型。

如果您使用Rails 4,请务必使用强参数将:start_time:end_time列入白名单。

是否可以为每个time_select创建一个选择?

默认情况下,Rails无法执行此操作。但是,您可以使用combined_time_select gem为您执行此操作:

f.time_select(:end_time, combined: true, minute_step: 30)

确保在安装此gem之后重新启动Rails服务器。

答案 1 :(得分:0)

这些帮助程序已针对ActiveRecord模型及其属性进行了优化。如果您有列start_timeend_time,则无需担心自己从传递的参数创建Time对象。

你有什么特别想要实现的目标?