我有一个表单,人们可以在其中选择日期,然后点击"过滤"。然后将此日期作为参数传递回控制器,并使用名为@users的用户列表重新加载视图
然后我有一个表单,我想将@users作为数组传递回来
我试过这个
= form_tag('/complete_export', :method => "put", :id => 'export') do |f|
%p=hidden_field_tag "users", "#{@users.map(&:id)}"
%p=submit_tag("Export results »")
但当它返回控制器时,参数返回看起来像这样......
[8] pry(#<AccountsController>)> params[:users]
"[53533, 51780, 17418, 153, 50667, 141, 48968, 48343, 48338, 47377, 44736, 40410, 27878, 172, 150, 34457, 37757, 26715, 31240, 31178, 30016, 184, 177, 196, 193, 155, 170]"
所以它实际上是以字符串形式回来的。如何将其作为数组传递给控制器,或将其在控制器中更改为数组。
修改
所以我现在修改了我的表格......
= form_tag('/complete_export', :method => "get", :id => 'export') do |f|
- @users.each do |user|
=hidden_field_tag :user_ids, :multiple => true, :value => user.id
%p=submit_tag("Export results »")
回到控制器中,参数显示为......
"utf8" => "✓",
"employee_ids" => "{:multiple=>true, :value=>170}",
"commit" => "Export results »",
"action" => "complete_payrite_export",
"controller" => "accounts"
显然,我错过了一些东西:(
答案 0 :(得分:2)
我会使用multiple
选项,在我看来比在控制器中进行投射更清晰。
- @users.each do |user|
= f.hidden_field :user_ids, :multiple => true, :value => user.id
您将在控制器中获得一个名为user_ids
的数组。
答案 1 :(得分:1)
这是因为您使用hidden_field_tag
f.hidden_field
个参数,这里是hidden_field_tag
替代方案:
- @users.each do |user|
= hidden_field_tag 'user_ids[]', user.id