rails page current ruby-on-rails model-view-controller view controller

ruby on rails - page - ¿Puedo obtener el nombre del controlador actual en la vista?



current page rails (3)

Además, en Rails Guides, dice:

El hash de params siempre contendrá el: controlador y las teclas de acción, pero debe usar los métodos controller_name y action_name para acceder a estos valores

Parámetros de ActionController

Entonces, digamos que tiene una clase de CSS active , que debe insertarse en cualquier enlace cuya página esté actualmente abierta (tal vez para que tenga un estilo diferente). Si tiene un controlador static_pages con una acción about , puede resaltar el enlace como lo hace en su vista:

<li> <a class=''button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>'' href="/about"> About Us </a> </li>

¿Hay alguna forma de averiguar cuál es el controlador actual desde dentro de la vista?

Para un ejemplo de por qué me gustaría saber esto: si varios controladores comparten el mismo diseño, puedo tener una parte en el archivo de diseño ERB donde quiero resaltar el elemento de menú de la página actual basado en el controlador.

Tal vez ese es un mal enfoque. Si es así, ¿cuál es la forma más preferida de hacer esto?

Sin embargo, estoy interesado en saber cómo obtener el nombre del controlador actual de cualquier manera.

(Obviamente, podría poner algo como @controller_name = ''users'' en cada controlador, pero eso parece ser el tipo de cosas que Rails ya habría hecho detrás de escena. Así que me pregunto si hay una forma integrada).


controller_name contiene el nombre del controlador utilizado para servir a la vista actual.


#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''

reference