0

Rails3のネストされたリソースは次のように定義されています

resources :candidates do
  collection do
    get :bookmarked
  end
  resources :bookmarks, :only => [:create, :destroy]
end

candidatsコレクションのブックマークされたアクションは、候補の新しいブックマークを作成します。これは期待どおりに正常に機能します。

ブックマークを削除しようとすると問題が発生します。

候補者のショーページに次のようなリンクがあります

<%= link_to "Remove bookmark", candidate_bookmarks_path(@candidate, @bookmark), :method => :delete %>

このリンクをクリックすると、次のエラーが発生します

No route matches "/candidates/1/bookmarks.8"

エラーで出力されたものではなく、URLが/ candidates / 1/ブックマーク/8であると期待していました。また、リクエストがブックマークコントローラーのdestroyメソッドに送信されることを期待していました。しかし、明らかにそれは起こっていません。

誰かが私が間違っていることを教えてもらえますか?助けていただければ幸いです。

4

1 に答える 1

2

破棄アクションのパスは、のcandidate_bookmark_path(@candidate, @bookmark)代わりに使用する必要がありcandidate_bookmarks_path(@candidate, @bookmark)ます。

特定の候補の特定のブックマークを削除することを忘れないでください。そのため、リソースはパス内で単一である必要があり、リソースごとに特定のオブジェクトを渡す必要があります。

于 2012-03-16T03:54:11.440 に答える