Rails current_page? versus controller.controller_name
Estoy implementandocurrent_page?
en una vista para probar si el controlador y la acción actuales son iguales a un cierto valor, sin embargo, no volverá a ser verdadero cuando esté en esa combinación de controlador / acción.
- if current_page?(:controller => 'pages', :action => 'main')
# doesn't return true when on that controller/action combination
La única forma en que funciona es si uso un método un poco más detallado de esta manera:
- if controller.controller_name == 'pages' && controller.action_name == 'main'
# this works just fine
¿Mi sintaxis es incorrecta o hay algo más aquí? ¿Hay una mejor manera de hacerlo, como establecer un BOOL o es la forma correcta?
El objetivo final es mostrar solo un cierto encabezado en la página de inicio principal mientras se muestra un encabezado diferente en todas las demás páginas.
Edita: Salida relevante derake routes
:
pages_main GET /pages/main(.:format) {:controller=>"pages", :action=>"main"}
root /(.:format) {:controller=>"pages", :action=>"main"}
Además, esta es la salida del servidor al renderizar:
Started GET "/" for 127.0.0.1 at 2011-03-03 16:54:40 -0500
Processing by PagesController#main as HTML
Rendered pages/main.html.haml within layouts/application (203.8ms)