2012-11-20 10 views
8

mam dwa proste modele, PIN i komentować, komentarze należy do PIN:Rails 3 - Aktualizacja zawartości div z AJAX i jQuery (zagnieżdżonych zasobów)

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

i

class Comment < ActiveRecord::Base 
    belongs_to :pin 

W Indeks akcji Pin W zasadzie mam listę wszystkich pinów + div. Ten div musi pokazywać wszystkie komentarze, gdy użytkownik wybierze pinezkę.

Koncepcja jest dość prosta, ale nie wiem, jak ją osiągnąć. Znalazłem wiele tematów związanych, ale zawsze zatraciłem się w różnicach z moim problemem.

Niektóre konkretne pytania:

  • jak to zrobić obciążenia ajax? (z jquery)
  • Czy muszę używać partials lub używać widoku indeksu komentarzy?

Odpowiedz

15

Zamierzam użyć łącza, aby użytkownik mógł wybrać Pin ale masz pomysł:

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

W comments_controller.rb (używam akcję index tutaj, ale dostosować do swoich potrzeb)

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

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

w tym przypadku kontroler będzie wyglądać do renderowania pin_comments.js.erb, które będą wchodzić w interakcje z komentarzami div.

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

Zobacz częściowe szablon, aby zobaczyć komentarze

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

nadzieję, że pomoże!

+0

Krystalicznie czysty, dziękuję. –

Powiązane problemy