2016-09-13 2 views
0

При чтении «Agile Web Development с Rails 4.0» я столкнулся с той строкой, которую я не могу полностью понять. Внутри application.html.erb автор устанавливает атрибут class из body тега следующим образом:Rails - controller.controller_name внутри представления - где задан объект контроллера?

<body class='<%= controller.controller_name %>'> 

Я знаю, что есть ActionController::Metal#controller_name метод в Rails, который возвращает подчеркнутую последнюю часть имени контроллера, я понимаю. Меня смущает объект controller, из которого вызывается этот метод. Я искал Rails API и не нашел никаких методов под названием controller, которые вернут экземпляр текущего контроллера. Где она определена или откуда она взялась?

+0

Хммм. Обычно имя контроллера можно найти через params [: controller], так как имя контроллера и действие отправляются через хэш параметров. Вы уверены, что это не особый метод в вспомогательном файле? – bkunzi01

+0

Да, я на 100% уверен, что это не обычай - я проверил эту часть приложения и не было определения для метода 'controller'. Руководство по Btw rails упоминает 'имя_контроллера' и советует использовать его вместо хэша' params' - раздел 4.3 [обзор контроллера] (http://edgeguides.rubyonrails.org/action_controller_overview.html). –

ответ

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