2012-03-05 3 views
2

У меня есть вложенное ресурс у пользователей:Проверьте текущий родительский контроллер вложенного ресурса

resources :users do 
    resources :reservations 
end 

В моих действиях контроллера я могу получить имя текущего контроллера с помощью controller.controller_name. Таким образом, в действии show user имя controller.controller возвращает «users». Аналогично в оговоренных оговорках действие возвращает «оговорки».

Но когда я являюсь вложенным маршрутом ресурсов, например, «http: // mywesite/users /: id/mutations», я хотел бы получить родительский контроллер вложенного ресурса, в данном случае «пользователи». Есть ли способ получить это, используя свойство контроллера или проверку маршрута? Я не поклонник регулярного выражения моего url.

Я могу проверить свои параметры [: user_id], но может ли это быть склонным к ошибкам? У меня может быть контроллер регистрации, в котором можно установить: user_id.

Причина, по которой я хочу иметь этот родительский ресурс, заключается в том, что я хочу создать форму поиска в своем макете только тогда, когда текущее действие имеет какое-то отношение к пользователям, например. все действия, которые выполняются в контроллере пользователей или контроллере вложенных ресурсов пользователей.

ответ

2

В вашем примере http://mywesite/users/:id/mutations будет http://mywesite/users/:user_id/mutations

Вы можете проверить Params [: user_id] .present?

См Getting the parent resource from the URL

+0

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

Смежные вопросы