0

我有一个定义如下的 rails 3 嵌套资源

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

候选人集合中的书签操作将为候选人创建一个新书签。这按预期工作正常。

当我尝试删除书签时出现问题。

我的候选人展示页面中有一个链接,如下所示

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

当我单击此链接时,我收到以下错误

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

我期待 url 是 /candidates/1/bookmarks/8 而不是错误中打印的内容。我还期望将请求定向到书签控制器销毁方法。但显然这并没有发生。

有人可以告诉我我做错了什么。任何帮助表示赞赏。

4

1 回答 1

2

销毁动作的路径应该是candidate_bookmark_path(@candidate, @bookmark)而不是candidate_bookmarks_path(@candidate, @bookmark).

请记住,您正在删除特定候选人的特定书签,因此资源在您的路径中应该是单数的,并且您需要为每个资源传递特定对象。

于 2012-03-16T03:54:11.440 回答