Передача массива через hidden_field_tag ​​в Rails - PullRequest
9 голосов
/ 22 декабря 2010

Я нашел этот вопрос на SO, но на самом деле это не помогло.

Итак, я хотел бы передать массив через скрытый тег поля. На данный момент мой код:

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

Это, очевидно, не работает, поскольку он передает идентификаторы в виде строки.

Как мне это сделать?

Ответы [ 4 ]

29 голосов
/ 22 декабря 2010

Привет, может быть, есть лучшее решение, но вы можете попробовать

<% @articles.map(&:id).each do |id| %>
  <%= hidden_field_tag "article_ids[]", id %>
<% end %>
1 голос
/ 29 мая 2016

Следующее работало у меня на Rails 4.1.10

<% @your_array.map().each do |array_element| %>
    <%= hidden_field_tag "your_array[]", array_element %>
<% end %>
1 голос
/ 22 декабря 2010

Вы можете попытаться разобрать его в 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)
0 голосов
/ 09 мая 2016

На Rails 4 вы можете сделать:

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

Поскольку Rails автоматически добавит «[]» к имени поля (при использовании multiple) и контроллер, который получит форму, увидитэто как массив значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...