3
ネストされたリソースを持つform_for
form_forとネストされたリソースについて2つの部分からなる質問があります。ブログエンジンを作成していて、コメントを記事に関連付けたいとしましょう。ネストされたリソースを次のように定義しました: map.resources :articles do |articles| articles.resources :comments end コメントフォームは、記事のshow.html.erbビュー内で、たとえば次のように記事自体の下にあります。 <%= render :partial => "articles/article" %> <% form_for([ :article, @comment]) do |f| %> <%= f.text_area :text %> <%= submit_tag "Submit" %> <% end %> これにより、「nilに対して呼び出されたIDが誤って呼び出される」などのエラーが発生します。私も試しました <% form_for @article, @comment do |f| %> これは正しくレンダリングされますが、コメントではなく記事の「テキスト」フィールドにf.text_areaを関連付け、そのテキスト領域のarticle.text属性のHTMLを表示します。だから私もこれが間違っているようです。私が欲しいのは、 'submit'がCommentsControllerのcreateアクションを呼び出すフォームです。たとえば、/ articles / 1 / commentsへの投稿リクエストなど、paramsにarticle_idがあります。 私の質問の2番目の部分は、最初にコメントインスタンスを作成する最良の方法は何ですか?ArticlesControllerのshowアクションで@commentを作成しているので、コメントオブジェクトはform_forヘルパーのスコープ内にあります。次に、CommentsControllerのcreateアクションで、form_forから渡されたパラメーターを使用して新しい@commentを作成します。 ありがとう!