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)

Respuestas a la pregunta(2)

Su respuesta a la pregunta