Ein Array durch eine hidden_field_tag ??in Rails
-
12-10-2019 - |
Frage
Ich habe diese Frage auf SO finden, aber es didn ‚t Hilfe, wirklich.
So, würde Ich mag ein Array durch einen versteckten Feld-Tag übergeben. Ab sofort ist mein Code:
<%= hidden_field_tag "article_ids", @articles.map(&:id) %>
Dies gilt natürlich nicht arbeiten, da es die ids als String übergibt.
Wie kann ich es tun?
Lösung
Hallo vielleicht gibt es eine bessere Lösung, aber man kann versuchen,
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids[]", id %>
<% end %>
Andere Tipps
Sie könnten versuchen, es zu analysieren, zu und von 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)
Oder Sie könnten nur die Verwendung von Komma getrennt machen 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)
Im Folgenden arbeitete für mich auf Schienen 4.1.10
<% @your_array.map().each do |array_element| %>
<%= hidden_field_tag "your_array[]", array_element %>
<% end %>
Auf Schienen 4 Sie tun können:
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids", value: id, multiple: true %>
<% end %>
als Schienen automatisch append „[]“ auf den Namen des Feldes (wenn multiple
verwendet wird) und die Steuerung, die die Form, werden sehen, empfängt als ein Array von Werten.