我确实在 SO 上找到了这个问题,但实际上并没有帮助。
所以,我想通过隐藏字段标签传递一个数组。截至目前,我的代码是:
<%= hidden_field_tag "article_ids", @articles.map(&:id) %>
这显然不起作用,因为它将 id 作为字符串传递。
我该怎么做?
我确实在 SO 上找到了这个问题,但实际上并没有帮助。
所以,我想通过隐藏字段标签传递一个数组。截至目前,我的代码是:
<%= hidden_field_tag "article_ids", @articles.map(&:id) %>
这显然不起作用,因为它将 id 作为字符串传递。
我该怎么做?
嗨,也许有更好的解决方案,但您可以尝试
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids[]", id %>
<% end %>
以下在 Rails 4.1.10 上为我工作
<% @your_array.map().each do |array_element| %>
<%= hidden_field_tag "your_array[]", array_element %>
<% end %>
您可以尝试将其解析为 json 和从 json 解析:
articles_list = @articles.map(&:id).to_json # gives u: [1,2,3,4,5]
# note that the result is a string instead of an array
article_ids = JSON.parse(articles_list)
或者你可以使用逗号分隔的字符串:
articles_list = @articles.map(&:id).join(",") # gives u: 1,2,3,4,5
# note that this result is a string also
article_ids = articles_list.split(/,/).map(&:to_i)
在 Rails 4 上,您可以执行以下操作:
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids", value: id, multiple: true %>
<% end %>
因为 Rails 会自动将“[]”附加到字段的名称(使用时multiple
),接收表单的控制器会将其视为值数组。