嵌套资源的命名路由问题

时间:2012-03-16 03:15:29

标签: ruby-on-rails-3 routes nested-resources

我有一个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"

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

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

1 个答案:

答案 0 :(得分:2)

销毁操作的路径应为candidate_bookmark_path(@candidate, @bookmark)而不是candidate_bookmarks_path(@candidate, @bookmark)

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