的Rails 3)删除,Destory和路由
的问题是下面的Rails 3)删除,Destory和路由
<%= button_to t('.delete'), @post, :method => :delete, :class => :destroy %>
我的职务模型的代码有很多的关系依赖于删除。但是,上面的代码只会删除帖子,使其关系保持不变。问题是方法delete和destroy在该方法中不同,delete不会实例化该对象。
所以我需要使用“销毁”而不是“删除”我的帖子。
<%= button_to t('.delete'), @post, :method => :destroy %>
给我路由错误。
没有路由匹配[POST] “/职位/ 2”
<%= button_to t('.delete'), @post, Post.destroy(@post) %>
删除后没有点击的按钮。
任何人都可以帮助我吗?
UPDATE:
的application.js
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-modal
//= require bootstrap-typeahead
//= require_tree .
耙路线
DELETE (/:locale)/posts/:id(.:format) posts#destroy
Post模型
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被破坏,但标签仍然存在。
:method => :delete
表示HTTP方法删除,没有任何与delete
活动记录的方法有关。
你需要检查你的模型的代码,你有没有错过:dependent => :destroy
选项的关系?
例如,如果该职位有很多意见,那么就应该是:
has_many :comments, :dependent => :destroy
当然,在你的控制器,你需要使用@post.destroy
,而不是@post.delete
。
。然后我不明白为什么我的标签在相关帖子被删除时仍然存在。你能检查我的模型,看看我的设置是否有问题? –
@MaximusS为什么要删除标签?帖子和标签是多对多的关系,所以当一个帖子被删除时,只有相关的tag_list应该被删除,标签不应该被删除,其他帖子也可以引用标签。 – xdazz
但如果删除的帖子有一个唯一的标签,其他帖子都没有引用,那么标签是否不应该被删除? –
你的路线文件是什么样的?你使用的是什么JavaScript库? – JPR
@JPR,检查更新。路线文件只是使用我看到的脚手架POST路线(基本CRUD) –