Désolée de pas répondre plus tôt j'étais occupée ailleurs...
Un problème que je vois dans ton code, c'est
1 2 3 4
|
<%=hidden_field_tag "piece["+p.id.to_s+"]", p.id, :name => "piece[id]", :class => "id_piece" %>
<%=label_tag :piece_description, p.description, :id => "piece_description_"+ p.id.to_s, :value => p.description, :name => "piece[description]" %>
<%=text_field_tag "quantite_piece["+ p.id.to_s+"]", nil, :name => "piece[quantite]", :class => "quantite_piece" %> |
Le nom de ton champ et que tu retrouveras dans params est dans :name,
donc pour toutes tes pièces tu as le même nom.
Le plus simple à mon avis est de différencier les noms de tes champs comme l'a proposé Taum.
Ce que j'aurais fait, c'est de mettre dans tes champs text_field_tag :
1 2 3
|
:name => "piece_" + p.id.to_s + "[quantite]"
:name => "piece_" + p.id.to_s + "[description]" |
Tu réccupère alors dans params :
piece_121 => { id => 121, quantite => ..., description => ...}, piece_122 => { id => 122, quantite => ..., description => ...},
Tu peux même certainement supprimer ton hidden field contenant l'id, car tu peux le réccupérer dans ton controlleur depuis le texte de piece_122
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
params.keys.each do |pkey|
if pkey.slice(0..5) == "piece_"
p_id = pkey.slice(6..pkey.size).to_i
puts "ID=" + p_id.to_s
# les valeurs correspondantes sont dans params[pkey] :
puts p(params[pkey])
end
end
# ID=121
# {"quantite"=>"quantite_de_p_121", "description"=>"..."}
# ID=122
# {"quantite"=>"quantite_de_p_122", "description"=>"..."} |
J'ai testé vite fait... j'espère que je t'ai pas mis trop d'erreurs!
Partager