【问题标题】:Rails 3: Ajax nested resource deleteRails 3:Ajax 嵌套资源删除
【发布时间】:2013-05-23 21:26:00
【问题描述】:

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

评论模型

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 中,我有以下块显示所有 cmets,并带有一个用于删除 cmets 的 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%>

谢谢,

【问题讨论】:

  • 你的 delete.js.erb 文件的内容是什么?
  • 我还没有 - @JakeSmith

标签: ruby-on-rails-3 jquery


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,成功了!我需要将 format.js 添加到我的控制器中。并创建一个 destroy.js.erb 文件。
【解决方案2】:

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

它对我有用(Rails 4)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多