0

问题是下面的代码

<%= button_to t('.delete'), @post, :method => :delete, :class => :destroy %>

我的 Post 模型有许多依赖于删除的关系。但是,上面的代码只会删除帖子,保持其关系不变。问题是方法 delete 和 destroy 不同,因为方法 delete 不实例化对象。

所以我需要使用“销毁”而不是“删除”我的帖子。

<%= button_to t('.delete'), @post, :method => :destroy %>给我路由错误。

没有路线匹配 [POST] "/posts/2"

<%= button_to t('.delete'), @post, Post.destroy(@post) %>删除帖子而不单击按钮。

谁能帮我解决这个问题?

更新:

应用程序.js

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-modal
//= require bootstrap-typeahead
//= require_tree .

耙路线

DELETE (/:locale)/posts/:id(.:format)                        posts#destroy

后模型

has_many :tag_links, :dependent => :destroy
has_many :tags, :through => :tag_links

标记模型

has_many :tag_links, :dependent => :destroy
has_many :posts, :through => :tag_links

问题: 当我删除一个帖子时,所有的 tag_links 都被破坏了,但标签仍然存在。

4

1 回答 1

0

:method => :delete表示HTTP METHOD DELETEdelete ,与活动记录的方法无关。

您需要检查模型的代码,是否错过了:dependent => :destroy关系的选项?

例如,如果帖子有很多评论,那么它应该是:

has_many :comments, :dependent => :destroy

当然,在您的控制器中,您需要使用@post.destroy而不是@post.delete.

于 2012-12-09T04:51:34.737 回答