0

問題は以下のコードです

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

私の投稿モデルには、削除に依存する多くの関係があります。ただし、上記のコードは投稿を削除するだけで、その関係はそのまま残ります。問題は、メソッド 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 => :deleteHTTP METHOD DELETEを意味し、deleteアクティブなレコードのメソッドとは関係ありません。

モデルのコードをチェックする必要があります:dependent => :destroy。リレーションのオプションを見逃していませんか?

たとえば、投稿に多くのコメントがある場合は、次のようにする必要があります。

has_many :comments, :dependent => :destroy

もちろん、コントローラーでは、@post.destroy代わりにを使用する必要があります@post.delete

于 2012-12-09T04:51:34.737 に答える