Estoy implementando current_page?
en una vista para probar si el controlador actual y la acción es igual a un cierto valor, sin embargo, no volverá a ser verdadero cuando esté en esa combinación de controlador/acción.Rails current_page? versus controller.controller_name
- if current_page?(:controller => 'pages', :action => 'main')
# doesn't return true when on that controller/action combination
La única forma en que se está trabajando es si utilizo el método un poco más detallado de este modo:
- if controller.controller_name == 'pages' && controller.action_name == 'main'
# this works just fine
¿Es mi sintaxis incorrecta o hay alguna otra cosa que sucede aquí? ¿Hay una forma mejor de hacerlo, como establecer un BOOL o es la manera correcta?
El objetivo final es mostrar solo un encabezado determinado en la página principal de aterrizaje mientras se muestra un encabezado diferente en todas las demás páginas.
Editar: salida pertinente de rake 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 antes de mostrarlo:
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)
Sus nombres de método de acción no deben comenzar con una letra mayúscula, por convención. –
sí, 'Principal' debería ser 'principal'. ver si eso hace una diferencia – s84
Convención a un lado, lamentablemente no hizo la diferencia. ¡Gracias por la sugerencia de todos modos! – iwasrobbed