2012-11-20 14 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

晶莹剔透,谢谢。 –