"Нет совпадений маршрутов" при использовании 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").

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