2012-03-16 2 views
0

У меня есть рельсы 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-адрес, чтобы быть/кандидатов/1/bookmarks/8 не то, что напечатано в ошибке. Я также ожидал, что запрос будет направлен на метод уничтожения контроллеров закладок. Но ясно, что этого не происходит.

Может кто-нибудь сказать мне, что я делаю неправильно. Любая помощь оценивается.

ответ

2

Путь для уничтожения должен быть candidate_bookmark_path(@candidate, @bookmark) вместо candidate_bookmarks_path(@candidate, @bookmark).

Просто помните, что вы удаляете определенную закладку определенного кандидата, поэтому ресурсы должны быть уникальными на вашем пути, и вам нужно передать конкретный объект для каждого ресурса.

Смежные вопросы