redirecting redirect_to rails ruby-on-rails controller action current-page

ruby on rails - redirect_to - Rails current_page? versus controller.controller_name



redirecting rails (2)

Estoy implementando current_page? en una vista para probar si el controlador y la acción actuales son iguales a un cierto valor, sin embargo, no se volverá 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 utilizo un método un poco más detallado como el siguiente:

- if controller.controller_name == ''pages'' && controller.action_name == ''main'' # this works just fine

¿Está mal mi sintaxis o está pasando algo más aquí? ¿Hay una forma mejor de hacerlo, como establecer un BOOL o es la forma correcta?

El objetivo final es mostrar solo un encabezado determinado en la página de destino principal y mostrar un encabezado diferente en todas las demás páginas.

Edición : salida relevante de las 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 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)


Tuve este problema cuando tuve 2 rutas que eran muy similares. Mira esto:

match ''/galleries/sales'' => ''galleries#sales'', :as => ''gallery_sales'' match ''/galleries/sales/:id'' => ''galleries#sales'', :as => ''gallery_category_sales''

La acción de mi controlador manejó la salida dependiendo de los parámetros, y originalmente hice esto porque no quería duplicación.

Cuando lo hice

current_page?(:controller => ''galleries'', :action => ''sales'', :id => id)

No volvió a ser cierto cuando debería, así que creé una ruta y acción diferente y funcionó bien.


current_page?(root_path) funciona bien.

Pero no puedo hacer que funcione con :controller y :action

Parece que el ayudante espera una cuerda, así que:

current_page?(url_for(:controller => ''pages'', :action => ''main''))

funciona bien también

Extraña contradicción con el doc .