1

我的 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

在我的Posts/show.html.erb中,我有以下块显示所有评论,并使用 link_to 助手删除评论。这适用于 HTML,但是当我添加 :remote => true 时,它​​删除了父帖子而不是评论!我该如何设置它只删除评论?

<% @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%>

谢谢,

4

2 回答 2

0

我认为您希望在 Comment 类的删除操作中包含此内容:

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 帮助程序指定特定控制器和操作的语法。

于 2013-05-23T21:57:45.470 回答
0

只需检查控制器中的相应动作即可。如果有 render 或 redirect_to 就删除它

它对我有用(Rails 4)

于 2015-04-16T09:49:59.893 回答