0

ユーザー、投稿、コメントの間に関連付けられた 3 つのモデルがあります。Comment は Post でネストされたリソースです。

ルート.rb

resources :posts do
 resources :comments
end

ユーザーモデル:

has_many :comments

投稿モデル:

has_many :comments

コメントモデル:

belonsg_to :user
belonsg_to :post

目標は、ユーザーが新しいコメントを作成したときに、そのユーザーとの関連付けを作成することです。したがって、ユーザーは自分が行ったすべてのコメントを知っているように見えます。

コメント_コントローラー.rb

def create
  @post = Post.find(params[post_id]
  @comment = @post.comments.build[:comment]
  current_user.comments >> @comment
  ....
end

new.html.erb

<% form_for [@post, @post.comment.build]  do |f| %>
.....
<% end %>

これにより、メソッドのコメントがないというエラーが発生します。これを避けるにはどうすればいいですか?

4

3 に答える 3

1

ほとんどの場合、new.html.erb に「S」の文字がありません。コメントにする必要があります:

<% form_for [@post, @post.comments.build]  do |f| %>
  .....
<% end %>

投稿していないロジックが背後にある場合は、お知らせください。あなたの作成アクションは問題ないようです。ID が入力されている場合は、コンソールの student_id 属性を調べてみてください。

于 2013-06-05T11:50:34.460 に答える
0

new.html.erbファイルでは、ビルド メソッドに "s" を使用しています。

そのはず、

<% form_for [@post, @post.comments.build]  do |f| %>
.....
<% end %>
于 2013-06-05T10:59:16.330 に答える
0

使用する

@post.comments.build

それ以外の

@post.comment.build (x)

これは機能するはずです。可能であれば、このコード行をビューからコントローラーに移動します

詳細については http://guides.rubyonrails.org/association_basics.html#detailed-association-reference

于 2013-06-05T10:56:21.410 に答える