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?

È stato utile?

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
scroll top