現在Railsでアプリを作っていて、TopicsコントローラーとCommnetsコントローラーが存在していて、アソシエーションを組んでます。
topics/show上にコメント用のフォームをつくり、トピックに対して投稿されたコメントも表示されるようにしているのですがいくつか問題が発生しています。
1、本来コメントはCommnetsコントローラー上で処理するべきだと思うのですが、
<%= form_for [@topic, @comment], :url => {:controller => :comments,:action => :create} do |f| %>
でフォームを作ろうとするとNo route matchesのエラーが発生してしまいました。
仕方がないので
<%= form_for [@topic, @comment], :url => {:controller => :topics,:action => :comcreate} do |f| %>
というようにしてTopicsコントローラー上で適当にComment.newをするアクションを作って解決したのですがこれは正しいのでしょうか。
2、コメントにバリデーションを設定しており、バリデーションに引っかかった場合rende引っかかった場合render 'show'でエラーメッセージを表示たいのですが、実際はundefined method `title' for nil:NilClassというエラーが発生します(titleはTopicテーブルのカラムです)。おそらくrenderでページを再読込した際にTopicテーブルが上手く読み込めていないという感じだと思います。
その他ちょっとした誤作動のようなものがいくつか発生しているのですが、topic/show上にコメントのフォームを作ったことあるいはコメントの処理をtopicsコントローラー上で行っていることが原因の用に感じます。どうするべきでしょうか
あなたの回答
tips
プレビュー