"Нет совпадений маршрутов" при использовании current_page в Rails 3
Кто-нибудь испытывал маршруты, загадочно становящиеся необнаружимыми при использовании current_page? в рельсах 3? Даже с полностью сгенерированным скаффолдом с маршрутами, представлением и контроллером я получаю ошибку "Нет совпадений маршрутов".
Вот код:
if current_page?(:controller => 'users', :action => "show")
Если я добавлю команду "match" в rout.rb, она будет работать нормально, но зачем мне это делать, если ресурсы уже созданы? Что мне не хватает?
3 ответа
Вы скучаете по id
параметр от этого помощника:
current_page?(:controller => "users", :action => "show", :id => "1")
Он ожидает, что вы пройдете полный маршрут через. Если вы не хотите этого и хотите использовать только контроллер и действие, я бы порекомендовал написать свой код.
Если вы просто хотите проверить текущий контроллер, вы можете сделать следующее:
if params[:controller] == 'users'
Точно так же, если вы используете контроллер пространства имен, вы можете просто использовать косую черту, чтобы отделить пространство имен от имени контроллера, например:
if params[:controller] == 'advertising/users'
В зависимости от ваших маршрутов, искать общий
show
действие без идентификатора, которое вы можете найти, например
!current_page?(:controller => "users", :action => "index")
.