Question

J'ai trouvé cette question sur le SO, mais il didn « t aide, vraiment.

Alors, je voudrais passer un tableau par une balise de champ caché. A partir de maintenant mon code est:

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

Cela ne fonctionne évidemment pas, car il passe les ids comme une chaîne.

Comment puis-je faire?

Était-ce utile?

La solution

Salut peut-être il y a une meilleure solution, mais vous pouvez essayer

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

Autres conseils

Vous pouvez essayer de l'analyser et à partir 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)

Ou vous pouvez simplement utiliser des virgules chaîne séparée:

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)

Ce qui suit a fonctionné pour moi on Rails 4.1.10

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

On Rails 4 que vous pouvez faire:

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

Rails sera automatiquement append « [] » au nom du champ (en utilisant multiple) et le dispositif de commande qui reçoit la forme verra que comme un tableau de valeurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top