Можно ли указать именованный маршрут в ресурсоемком маршруте?

Я просто обновляю свое приложение до Rails 3 и, так как мне все равно приходится переписывать свою маршрутизацию, я трачу некоторое время на улучшение названных маршрутов.

У меня есть контроллер счетов, который выполняет действие корзины (/invoices/trash перечисляет все счета в корзине). Я хочу получить доступ к этому через именованный маршрут (т.е. trash_url) для простоты в моих взглядах.

Я могу добиться этого достаточно легко с помощью следующих

match "/invoices/trash" => "invoices#trash", :as => :trash

То, что я хочу знать, есть ли способ сделать это в блоке, где я определяю маршруты для моего контроллера счетов. Я пробовал следующее, и это не работает.

resources :invoices do
  collection do
    get :trash, :as => :trash
  end
end

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

Благодарю.

1 ответ

Решение

Метод, который вы перечислите (показанный ниже), прекрасно работает для меня, он генерирует trash_invoices_path а также trash_invoices_url вспомогательные методы.

resources :invoices do
  collection do
    get :trash, :as => :trash
  end
end

Вы можете сделать методы в вашем контроллере приложения с именем trash_url а также trash_path это просто вызов и возврат пути из сгенерированных методов, упомянутых выше, если у вас есть необходимость использовать эти конкретные имена методов вместо сгенерированных.

Другие вопросы по тегам