2012-11-20 45 views
8

我有兩個簡單的模型,引腳和評論,評論屬於引腳:的Rails 3 - 更新DIV的內容與阿賈克斯和jQuery(嵌套資源)

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

class Comment < ActiveRecord::Base 
    belongs_to :pin 

在針腳的索引動作基本上是所有針腳的列表+ a div。 這div必須顯示所有的評論,當用戶選擇一個引腳。

概念很簡單,但我無法弄清楚如何實現它。 我發現很多相關的科目,但我總是迷失在自己的問題上。

一些精確的問題:

  • 如何做到這一點ajax的負荷? (與jquery)
  • 我需要使用partials或使用評論的索引視圖?

回答

15

我將使用一個鏈接,用戶選擇一個引腳,但你的想法:

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

在comments_controller.rb(我在這裏使用索引操作,但調整你的需求)

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> 

希望幫助!

+0

晶瑩剔透,謝謝。 –