2012-11-20 31 views
8

Tôi đã hai mô hình đơn giản, Pin và Bình luận, nhận xét thuộc về Pin:Rails 3 - Cập nhật nội dung div với Ajax và jquery (nguồn lực lồng)

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

class Comment < ActiveRecord::Base 
    belongs_to :pin 

Trong hành động chỉ mục của Pin Tôi cơ bản là danh sách tất cả các chân + a div. div này phải hiển thị tất cả nhận xét khi người dùng chọn ghim.

Khái niệm khá đơn giản, nhưng tôi không thể tìm ra cách để đạt được nó. Tôi đã tìm thấy nhiều chủ đề liên quan, nhưng tôi luôn luôn bị mất chính mình trong sự khác biệt với vấn đề của tôi.

Một số câu hỏi chính xác:

  • Làm thế nào để làm tải ajax này? (với jquery)
  • Tôi có cần sử dụng partials hoặc sử dụng chế độ xem chỉ mục của nhận xét không?

Trả lời

15

tôi sẽ sử dụng một liên kết cho người dùng lựa chọn một Pin nhưng bạn sẽ có được ý tưởng:

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

Trong comments_controller.rb (Tôi đang sử dụng action index ở đây, nhưng tinh chỉnh theo nhu cầu của bạn)

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

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

Trong trường hợp này, trình điều khiển sẽ xem xét kết xuất div_comments.js.erb, sẽ tương tác với div nhận xét của bạn.

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

Xem mẫu một phần để hiển thị bình luận

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

Hy vọng rằng sẽ giúp!

+0

Tinh thể rõ ràng, cảm ơn bạn. –

Các vấn đề liên quan