Passaggio di un array attraverso un hidden_field_tag ??in Rails
-
12-10-2019 - |
Domanda
Ho trovato questo domanda su SO, ma didn 't aiuto, davvero.
Quindi, mi piacerebbe passare un array attraverso un tag campo nascosto. A partire da ora il mio codice è:
<%= hidden_field_tag "article_ids", @articles.map(&:id) %>
Questo non lo fa, ovviamente, il lavoro dal momento che passa gli ID come una stringa.
Come posso fare?
Soluzione
Ciao forse non c'è soluzione migliore, ma si può tentare
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids[]", id %>
<% end %>
Altri suggerimenti
Si potrebbe provare a analizzarlo da e 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)
Oppure si può semplicemente fare uso di separati da virgola stringa:
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)
Di seguito ha lavorato per me on Rails 4.1.10
<% @your_array.map().each do |array_element| %>
<%= hidden_field_tag "your_array[]", array_element %>
<% end %>
On Rails 4 si può fare:
<% @articles.map(&:id).each do |id| %>
<%= hidden_field_tag "article_ids", value: id, multiple: true %>
<% end %>
come rotaie verrà automaticamente accodamento "[]" al nome del campo (utilizzando multiple
) e il controllore che riceve la forma vedrà che come una matrice di valori.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow