Rails 3:Ajax嵌套资源删除

时间:2013-05-23 21:26:01

标签: ruby-on-rails-3 jquery

我的Rails 3应用程序中有一个嵌套资源模型。它是带有帖子和评论的标准博客应用程序。我刚开始使用jQuery等来使我的应用程序更具动态性,我现在正在努力使用link_to帮助程序删除嵌套模型中的注释。

评论模型

class Comment < ActiveRecord::Base
  belongs_to :post
end

发布模型

class Post < ActiveRecord::Base
  has_many :comments, :dependent => :destroy
  accepts_nested_attributes_for :comments
end

在我的帖子/ show.html.erb 中,我有以下bloc,它显示所有带有link_to帮助程序的注释以删除注释。这适用于HTML,但是当我添加:remote =&gt;是的,它删除了父帖而不是评论!如何设置它以便仅删除注释?

<% @post.comments.each do |comment| %>
      <%= comment.body %>   
      <%= link_to "Approve", [@post,comment], :method =>:put, :remote=>true %>
      <%= link_to "Delete", [@post,comment], :method =>:delete, :remote=>true %>        
<%end%>

谢谢,

2 个答案:

答案 0 :(得分:0)

我认为您希望在评论类的删除操作中使用此功能:

def delete
    ...
    respond_to do |format|
        format.html
        format.js
    end
end

然后,在您的views / comments目录中,您应该有一个名为delete.js.erb的文件来执行您的jQuery DOM操作(找到您单击删除链接的特定注释并将其删除。

然后,您的Posts / show.html.erb文件中的delete方法的link_to,您可以指定控制器和操作,并传入您可能需要的任何数据(父帖子,以便您可以在其中引用它)你的jQuery)。您可以参考本网站的第一个示例部分,了解为link_to帮助程序here指定特定控制器和操作的语法。

答案 1 :(得分:0)

只需检查控制器中的相应操作即可。 如果有渲染或redirect_to只是删除它

它对我有用(Rails 4)