的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被破坏,但标签仍然存在。

+0

你的路线文件是什么样的?你使用的是什么JavaScript库? – JPR

+0

@JPR,检查更新。路线文件只是使用我看到的脚手架POST路线(基本CRUD) –

:method => :delete表示HTTP方法删除,没有任何与delete活动记录的方法有关。

你需要检查你的模型的代码,你有没有错过:dependent => :destroy选项的关系?

例如,如果该职位有很多意见,那么就应该是:

has_many :comments, :dependent => :destroy 

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

+0

。然后我不明白为什么我的标签在相关帖子被删除时仍然存在。你能检查我的模型,看看我的设置是否有问题? –

+1

@MaximusS为什么要删除标签?帖子和标签是多对多的关系,所以当一个帖子被删除时,只有相关的tag_list应该被删除,标签不应该被删除,其他帖子也可以引用标签。 – xdazz

+0

但如果删除的帖子有一个唯一的标签,其他帖子都没有引用,那么标签是否不应该被删除? –