вы можете использовать это совпадение в rout.rb:
match ':controller(/:action(/:id(.:format)))'
или некоторых его вариантах, например get
вместо match
и т. Д.
Поскольку маршруты разрешаются сверху вниз тогда вы можете использовать свои исключения (и стандартные маршруты ресурсов) выше общее правило маршрута.
Что касается вопросов безопасности - если у вас есть этот общийправило в вашей таблице маршрутизации, тогда вы должны защитить все неактивные методы в контроллере с помощью ключевого слова private .
Существует еще одна проблема с универсальным правилом.Сравните это правило:
get "foo/show/:id", :to => "foo#show"
с общим.Преимущество этого явного правила в том, что оно никогда не вызывается для /foo/show
(без идентификатора), поэтому вы не окажетесь в ситуации, когда в вашем методе действия нет params[:id]
.
Иодин последний комментарий к вашему вопросу: использование сессии для сохранения состояния навигации, как правило, не очень хорошая вещь.Это зависит от вашей конфигурации, но сессии могут быть разделены между двумя вкладками браузера - и тогда навигация может стать довольно грязной.И не забывайте ужасную кнопку Назад.
Так что я считаю, что вам не следует использовать общий маршрут.