Метод пользовательского контроллера Rails3 не маршрутизируется: работает в Rails2

Я использовал Rails 2.3.8 для проекта, над которым работал, но только что перенес проект на Rails 3.0.3. После устранения основных ошибок у меня возникла проблема с методом пользовательского контроллера.

В галерее_контроллера у меня был собственный метод под названием «извлечение». В rails 2.3.8 это работало нормально, без дополнительной настройки. Я мог бы перейти к /galleries/extract/:id, и он сделал бы то, что я хотел.

Теперь этот код ломает приложение, когда я пытаюсь создать ссылку на него с исходным кодом в виде:

<%= link_to "Add photos to gallery from: ",
        :action => 'extract', :id => @gallery.id %>

и ошибка, которую я получаю, когда пытаюсь перейти на страницу с этим кодом:

No route matches {:action=>"extract", :controller=>"galleries", :id=>2}

Посмотрев на route.rb, я пришел к выводу, что это не удается, потому что

match ':controller(/:action(/:id(.:format)))'

не включен и фактически устарел.

Запуск рейк-задач | grep 'extract' ничего не дает.

Итак, как мне это исправить?


person Josh Kovach    schedule 16.12.2010    source источник


Ответы (1)


См. Руководство по маршрутизации: добавление дополнительных действий RESTful. Вам нужно сообщить маршрутам вашего приложения о действии извлечения примерно так:

resources :gallery do
  get 'extract', :on => :member
end
person wmorgan    schedule 16.12.2010
comment
Спасибо за ссылку. Это очень помогло. - person Josh Kovach; 23.12.2010