2012-11-20 4 views
8

Ich habe zwei einfache Modelle, Pin und Kommentar gehören Kommentare zu Pin:Rails 3 - Update div Inhalte mit Ajax und jQuery (verschachtelten Ressourcen)

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

und

class Comment < ActiveRecord::Base 
    belongs_to :pin 

In der Index Aktion von Pin Ich habe im Grunde eine Liste aller Pins + a div. Dieser div muss alle Kommentare anzeigen, wenn der Benutzer einen Pin auswählt.

Konzept ist ziemlich einfach, aber ich kann nicht herausfinden, wie man es erreicht. Ich habe viele Themen gefunden, aber ich verlor mich immer in den Unterschieden mit meinem Problem.

Einige präzise Fragen:

  • Wie diese Ajax-Last zu tun? (mit jquery)
  • Muss ich Teiltöne verwenden oder Indexansicht von Kommentaren verwenden?

Antwort

15

Ich werde einen Link für den Benutzer verwenden, um einen Pin zu wählen, aber Sie bekommen die Idee:

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

Im comments_controller.rb (Ich bin hier, um den Index Aktion verwenden, aber zwicken Ihren Bedürfnissen)

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

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

In diesem Fall wird die Steuerung zu machen pin_comments.js.erb aussehen wird, die mit Ihren Kommentaren div interagieren.

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

anzeigen Teil Vorlage Kommentare

#_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> 

Hoffnung zu zeigen, das hilft!

+0

Kristallklar, danke. –