8

ピンとコメントの 2 つの単純なモデルがあり、コメントはピンに属します。

class Pin < ActiveRecord::Base
    has_many :comments, dependent: :destroy

class Comment < ActiveRecord::Base
    belongs_to :pin

Pin の index アクションでは、基本的にすべてのピン + divのリストを作成しました。このdivは、ユーザーがピンを選択したときにすべてのコメントを表示する必要があります。

コンセプトは非常にシンプルですが、それを達成する方法がわかりません。関連する多くの主題を見つけましたが、私はいつも自分の問題との違いに自分自身を失いました.

いくつかの正確な質問:

  • このajaxロードを行う方法は? (jqueryで)
  • パーシャルを使用するか、コメントのインデックス ビューを使用する必要がありますか?
4

1 に答える 1

15

ユーザーがピンを選択するためのリンクを使用しますが、アイデアは次のとおりです。

#:remote => true allows ajax stuffz.
<%= link_to 'show comments', pin_comments_path(@pin), :remote=> true %>

comments_controller.rb 内 (ここでは index アクションを使用していますが、必要に応じて調整してください)

def index 
  @pin = Pin.find(params[:pin_id])
  @comments = @pin.comments.all

  respond_to do |format|
    format.js { render :pin_comments }
  end
end

この場合、コントローラーは pin_comments.js.erb をレンダリングするように見えます。これは、コメント div と対話します。

//pin_comments.js.erb
$("#comments_div").html("<%= j(render('show_comments', :comments=> @comments)) %>");

コメントを表示する部分テンプレートを表示

#_show_comments.html.erb
<div id="comments_div">
    <% comments.each do |c| %> 
        <p>
           <h1><%= c.title %></h1>
           <h6>by <%= c.author %> </h6>
           <%= c.content %>
        </p>
    <% end %>
</div>

それが役立つことを願っています!

于 2012-11-20T11:00:56.443 に答える