2016-06-24 5 views
0

私はポストモデルを持っており、インデックスページに表示ポストのためのループがあります。私はポストに属するコメントを持っていますので、ショーのポストページで私はループを使用しました<% @comments.each do |comment| %><%= comment.body %><% end %>しかし、ポストがレスポンスを持っているので、私はAdd Responseをクリックした後、「ループコメントのループ応答」を書くとき、私は警告ループのループループ

The response has successfully added

を持っていますが、それはコメントの下に表示されません、私はそれが壊れてループだと思います:

post#show

<% @comments.each do |comment| %> 

    <p> Author: <%= comment.user.nickname %></p> 
    <p><%= comment.body %></p> 

    <%= link_to "Add a response to comment!", 
     new_post_comment_response_path(@post, comment) %> 

    <% @responses.each do |response| %> 
    <%= response.body_response %> 
    <% end %> 

<% end %> 

での私のコードは、それが間違っていますか?

+0

config/routes.rbの内容を入力してください – Hoa

+0

'@ responses'とは何ですか? – Vucko

+0

変数が期待どおりに割り当てられていると仮定すると、コードは正しいように見えます。 – hypern

答えて

2

あなたのコントローラで@responsesインスタンス変数を定義していないので、あなたは@responses.each do |response|を行うことができない...と各responsesコレクションはあなたが持っていると仮定すると、各comment

異なるため、あなたはそうすることができませんあなたが行うことができますあなたのコメントクラスのhas_many :responses ...

<% comment.responses.each do |response| %> 
+0

だから、私はそれをやっている:コメントの下に私はコメントidに属するものだけでなく、すべての応答を持っています。私の@responsesのdef show endメソッドは以下の通りです: '@responses = Response.where(:comment_id => params [:comment_id])' order( "created_at DESC") ' idに属するレスポンスを取得したいコメント。それを得る方法?すべての応答ありがとう!私は嬉しい! –

+0

"投稿にはbelongs_to投稿があり、レスポンスがたくさんあるので" comment.responses "というメソッドがあるので、それを使うべきです。 '@responses = Response.where(post_id:@ post.id)... 'を実行すると、投稿のすべての回答が得られます。あなたが言うように、あなたは見ています。私の答えでコードを試しましたか? – SteveTurczyn

+0

レスポンス= Response.find(params [:review_id])を使用するとエラーが表示されます。「レスポンスが 'id' = " –

0

私はあなたが好きな方法は、あなたが多くのコメントを持つことができますし、コメントへの返答があるだろうポストを、持っているということだと思います。

これはあなたのモデルであるはずです:

Post.rb --> :has_many comments 
Comment.rb --> :belongs_to post 

Comment.rb --> :has_many responses 
Response.rb --> :belongs_to comment 

ポストこれは、次の操作を行うことができます。

特定の投稿のすべてのコメントとそれに対する回答

を表示するには
@post = Post.find(:id) 
@comments = @post.comments 

@comments.each do |comment| 
    puts comment.info 
    puts comment.author 
    @responses = comment.responses 
    @responses.each.do |response| 
     // Considering the response resource has attributes info, likes, unlikes 
     puts response.info 
     puts response.likes 
     puts response.unlikes 
    end 
end 
関連する問題