2012-12-09 125 views
0

的問題是下面的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) –

回答

0

:method => :delete表示HTTP方法刪除,沒有任何與delete活動記錄的方法有關。

你需要檢查你的模型的代碼,你有沒有錯過:dependent => :destroy選項的關係?

例如,如果該職位有很多意見,那麼就應該是:

has_many :comments, :dependent => :destroy 

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

+0

。然後我不明白爲什麼我的標籤在相關帖子被刪除時仍然存在。你能檢查我的模型,看看我的設置是否有問題? –

+1

@MaximusS爲什麼要刪除標籤?帖子和標籤是多對多的關係,所以當一個帖子被刪除時,只有相關的tag_list應該被刪除,標籤不應該被刪除,其他帖子也可以引用標籤。 – xdazz

+0

但如果刪除的帖子有一個唯一的標籤,其他帖子都沒有引用,那麼標籤是否不應該被刪除? –