2011-08-30 8 views
5

Estoy tratando de añadir etiquetas de gráficos abierta condicionales para mi aplicación, utilizando current_page, pero estoy recibiendo un error de enrutamiento:Error de enrutamiento en los rieles con current_page?

Esto es lo que me pasa en rake routes

product GET /products/:id(.:format) {:action=>"show", :controller=>"products"} 

y esto es en mi parcial:

<% if current_page?(:controller => 'products', :action => 'show') %> 
... 
<% end %> 

Pero consigo:

Routing Error 

No route matches {:controller=>"products", :action=>"show"} 

He intentado usar product y products pero ninguno parece funcionar. ¿Alguna idea?

Respuesta

5

debe pasar el id así:

<% if current_page?(:controller => 'products', :action => 'show', :id => params[:id]) %> 

ACTUALIZACIÓN:

Pero, sin embargo, esta implementación asume que las páginas que hacen que esta parcial tienen un parámetro de identificación como. Si no lo hacen, es mejor usar una variable local para eso.

render :partial => 'blah_blah', :locals => {:id_for_route_verification => params[:id] || 0} 

y en el uso parcial de la nueva variable local

<% if current_page?(:controller => 'products', :action => 'show', :id => id_for_route_verification) %> 

Sé que esto es un poco hacky. Pero, en primer lugar, debería considerar usar content_for para representar contenido dentro de forma condicional parcial en lugar de ir por current_page? acercamiento

+0

Entonces, pensé que esta era la respuesta, pero introdujo un error donde cualquier página que no coincidía o tiene 'params [: id]' en la URL arrojó un error 404 no encontrado. – Slick23

+0

actualizó la respuesta :) – dexter

+0

Gracias. El enfoque 'content_for' es una buena idea. – Slick23

Cuestiones relacionadas