В направляющих 2 можно использовать: любая опция определить пользовательский маршрут, который отвечает на любой метод запроса, например.
map.resources :items, :member => {:erase => :any}
направляющие 3, кажется, не поддерживают: любая опция
resources :items do
get :erase, :on => :member # works
any :erase, :on => :member # doesn't work
end
кто-либо знает, была ли эта опция удалена или просто переименована?
Хороший вопрос.
Глядя на руководство по маршрутизации Edge Rails и исходный код Rails 3 , похоже, что он не поддерживается. Вы можете поднять билет в Rails Lighthouse (я не смог найти для этого существующий).
Из поиска и просмотра того, что действительно делают действия get
, post
, put
и delete
в ActionDispatch
, я думаю, все, что вам нужно сделать, это сопоставить
. Итак:
resources :items do
get :erase, :on => :member
match :erase, :on => :member
end
Я не думаю, что синтаксис для match на самом деле документирован, но маршруты, которые он создает, по крайней мере для меня, являются тем, что вы ожидаете от метода all
Соответствие будет работать, но, к сожалению, не внутри определения ресурсов. Я бы предпочел, чтобы они вернули способ определения получения / публикации по крайней мере вместе ..