Rails 3, Modifier Plusieurs Enregistrements dans un Formulaire Unique
J'ai été coincé sur ce problème pour un couple de jours maintenant.
J'ai un certain succès avec Railscasts l'Épisode n ° 198, mais que l'on est pour Rails 2. Il y a eu quelques changements dans Rails 3, qui est le code fourni dans l'Épisode n ° 198 de ne pas travailler.
Le problème réside dans le edit_individual.html.erb:
Code d'origine (fourni par Ryan @ Railscasts):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% fields_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render "fields", :f => f %>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
Code modifié (simplement changé fields_for à form_for):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% form_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render "fields", :f => f %>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
Dans le nouveau code, chaque enregistrement est placé dans une forme qui leur est propre, tous à l'intérieur d'un seul formulaire (qui est celui que je veux seulement).
Ma question est, comment puis-je obtenir le code fourni par Railscasts l'Épisode n ° 198 de travailler dans Rails 3?
Voici un lien vers le Railscast je l'ai mentionné:
http://railscasts.com/episodes/198-edit-multiple-individually
Merci,
c.allen.rosario
form_for
l'intérieur d'un autre form_for
, car cela signifierait une <form>
balise à l'intérieur d'un autre <form>
tag. Vous ne besoin d'utiliser fields_for
. Quelles sont les erreurs lorsque vous exécutez le code dans Rails 3 ?Aucune erreur n'est affichée. J'ai juste une page blanche avec un bouton de soumission.
OriginalL'auteur chris__allen | 2010-12-08
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution. Suffit de modifier la ligne suivante dans le code fourni par Ryan @ Railscasts:
et à le modifier:
Avis, que le
<%
a été modifié pour<%=
.solution finale:
Je me demandais si quelqu'un pourrait expliquer cette solution pour moi. Ce que je comprends, vous devriez seulement besoin d'un
<%
en face de lafields_for
.c.allen.rosario
=
est nécessaire dans Rails 3, bien qu'il n'était pas nécessaire dans plus tôt Rails versions. N'avez-vous pas besoin de l'utiliser pour laform_tag
?L' = était pas nécessaire pour la form_tag
Je pense que, d'une virgule manquante, votre solution finale doit commencer par:
<% form_tag update_individual_products_path, :method => :put do %>
OriginalL'auteur chris__allen
Le changement de Rails 3 de <% fields_for <%= fields_for est parce qu'il a été source de confusion que form_for, form_tag, etc... ont été à l'aide de <%... %> même si ils étaient en sortie de code html.
Avec Rails 3, depuis leur sortie de code html, ils utilisent <%=.
Veuillez noter que votre première ligne est obsolète:
devrait être
Même pour toutes les balises de formulaire.
OriginalL'auteur gamov