1

在 Rails 3.2.5 中,我似乎无法弄清楚如何datetime_select在内部数组中收集许多结果params

例如,如果我有这个

<input type="text" name="poll[options][]">
<input type="text" name="poll[options][]">

然后 params 将包含所有字段params[:poll][:options]的数组。options

这是我的datetime_select

datetime_select "scheduler", "options", {
  add_month_numbers: true, 
  start_year: Date.today.year, 
  default: DateTime.now + 1.day, 
  datetime_separator: "<span>at</span>", 
  time_separator: "<span>:</span>", 
  leading_zeros: true
}

我想datetime_select在表格中重复很多次。

模型/字段参数似乎不允许进行任何类似"scheduler[]""options[]"收集结果数组的操作datetime_select

我怎样才能做到这一点,以便许多日期时间对象出现在位于的数组中params[:scheduler][:options]

更新

这是我目前如何破解它:

datetime_select_tags = datetime_select "scheduler_selects", "", add_month_numbers:true, start_year:Date.today.year, default:DateTime.now + 1.day, datetime_separator:"<span>at</span>", time_separator:"<span>:</span>", leading_zeros:true
datetime_select_tags.gsub! 'name="scheduler_selects', 'name="scheduler[options][]'

这会产生像这样的标签

<select id="scheduler_selects__1i" name="scheduler[options][][(1i)]">

所以params正确地包含

"scheduler" => { 
  "options" => [
    {"(1i)"=>"2012", "(2i)"=>"6", "(3i)"=>"13", "(4i)"=>"15", "(5i)"=>"24"}, 
    {"(1i)"=>"2012", "(2i)"=>"6", "(3i)"=>"13", "(4i)"=>"15", "(5i)"=>"24"}
  ],
},

我可能会尝试将其包装在帮助程序中,以便生成唯一的 HTML id 属性。不过,真的希望这不是长期的解决方案。

4

1 回答 1

0

通过反复试验,我发现这是可行的:

<%= form_tag :things do %>
<%= datetime_select("dates[a]", "b" ) %>
<%= datetime_select("dates[c]", "d" ) %>
<%= submit_tag 'save' %>
<% end %>

这为您提供了类似params[:dates]["a"]和的哈希值params[:dates]["b"]。我无法让内部索引与符号一起使用,而且我不确定如何使那些 1i、2i、... 后缀消失。

于 2012-06-12T18:05:40.150 回答