提交datetime_selects数组

时间:2012-06-12 16:08:45

标签: ruby-on-rails ruby

在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属性。但真的希望这不是长期的解决方案。

1 个答案:

答案 0 :(得分: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,......后缀消失。