通过 Rails 中的hidden_​​field_tag 传递数组

发布于 2024-10-08 22:00:16 字数 311 浏览 8 评论 0原文

我确实找到了这个问题,但没有帮助, 真的。

所以,我想通过隐藏字段标记传递一个数组。 截至目前,我的代码是:

<%= hidden_field_tag "article_ids", @articles.map(&:id) %>

这显然不起作用,因为它将 ids 作为字符串传递。

我该怎么做?

I did find this question on SO, but it didn't help, really.

So, I'd like to pass an array through a hidden field tag.
As of now my code is:

<%= hidden_field_tag "article_ids", @articles.map(&:id) %>

This obviously does not work since it passes the ids as a string.

How do i do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

街道布景 2024-10-15 22:00:16

您好,也许有更好的解决方案,但您可以尝试

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids[]", id %>
<% end %>

Hi maybe there is better solution but you may try

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids[]", id %>
<% end %>
贵在坚持 2024-10-15 22:00:16

以下内容在 Rails 4.1.10 上对我有用

<% @your_array.map().each do |array_element| %>
    <%= hidden_field_tag "your_array[]", array_element %>
<% end %>

The following worked for me on Rails 4.1.10

<% @your_array.map().each do |array_element| %>
    <%= hidden_field_tag "your_array[]", array_element %>
<% end %>
死开点丶别碍眼 2024-10-15 22:00:16

您可以尝试将其解析为 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)

You could try to parse it to and from 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)

Or you could just make use of comma separated string:

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)
榕城若虚 2024-10-15 22:00:16

在 Rails 4 上,您可以这样做:

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids", value: id, multiple: true %>
<% end %>

因为 Rails 会自动将“[]”附加到字段名称(使用 multiple 时),并且接收表单的控制器会将其视为值数组。

On Rails 4 you can do:

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids", value: id, multiple: true %>
<% end %>

As Rails will automatically append "[]" to the name of the field (when using multiple) and the controller that receives the form will see that as an array of values.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文