J'ai une question en deux parties sur form_for et les ressources imbriquées. Disons que j'écris un moteur de blog et que je souhaite relier un commentaire à un article. J'ai défini une ressource imbriquée comme suit:
map.resources :articles do |articles|
articles.resources :comments
end
Le formulaire de commentaire se trouve dans la vue show.html.erb pour les articles, sous l'article lui-même, par exemple comme ceci:
<%= render :partial => "articles/article" %>
<% form_for([ :article, @comment]) do |f| %>
<%= f.text_area :text %>
<%= submit_tag "Submit" %>
<% end %>
Cela donne une erreur, "Called id for nil, qui serait par erreur etc." J'ai aussi essayé
<% form_for @article, @comment do |f| %>
Ce qui rend correctement mais relie f.text_area au champ 'text' de l'article au lieu du commentaire, et présente le html de l'attribut article.text dans cette zone de texte. Il me semble donc que je me trompe également. Ce que je veux, c'est un formulaire dont 'submit' appellera l'action de création sur CommentsController, avec un article_id dans les paramètres, par exemple une demande de publication à / articles / 1 / comments.
La deuxième partie de ma question est la suivante: quelle est la meilleure façon de créer l'instance de commentaire pour commencer? Je crée un @comment dans l'action show de ArticlesController, donc un objet de commentaire sera dans la portée de l'aide form_for. Ensuite, dans l'action create du CommentsController, je crée un nouveau @comment en utilisant les paramètres transmis depuis form_for.
Merci!