Я могу получить имя текущего контроллера в вид?


есть ли способ выяснить, что текущий контроллер находится в пределах представления?

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

может быть, это плохой подход. Если так, то это более предпочтительный способ сделать это?

Мне интересно узнать о получении имени регулятор тока в любом случае, хотя.

(очевидно, я мог бы поставить что-то вроде @controller_name = 'users' в каждом контроллере; но это похоже на то, что рельсы уже сделали бы за кулисами. Поэтому мне просто интересно, есть ли встроенный способ.)

4   184   2010-09-21 09:19:48

4 ответа:

controller_name содержит имя контроллера, используемого для обслуживания текущего представления.

кроме того, в направляющих рельсов, он говорит:

хэш params всегда будет содержать ключи: controller и :action, но вы должны использовать методы controller_name и action_name вместо того, чтобы получить доступ к этим значениям

Параметры ActionController

Итак, допустим, у вас есть класс CSS active, это должно быть вставлено в любую ссылку, страница которой в настоящее время открыта (возможно, чтобы вы могли стиль по-разному) . Если у вас есть

#to get controller name:
<%= controller.controller_name %>
#=> 'users'

#to get action name, it is the method:
<%= controller.action_name %>
#=> 'show'


#to get id information:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
#=> '23'

# or display nicely
<%= debug Rails.application.routes.recognize_path(request.url) %>

ссылка

controller_path содержит путь контроллера, используемого для обслуживания текущего представления. (т. е.: admin/settings).

и

controller_name содержит имя контроллера, используемого для обслуживания текущего представления. (т. е.: settings).