2008-09-29 16 views
5

Tener esta ruta:¿Cómo puedo evitar que link_to escape barras oblicuas en los parámetros de URL en Rails?

map.foo 'foo/*path', :controller => 'foo', :action => 'index' 

I tienen los siguientes resultados para el link_to llamada

link_to "Foo", :controller => 'foo', :path => 'bar/baz' 
# <a href="/foo/bar%2Fbaz">Foo</a> 

Calling url_for o foo_url directamente, incluso con :escape => false, me dan la misma url:

foo_url(:path => 'bar/baz', :escape => false, :only_path => true) 
# /foo/bar%2Fbaz 

Quiero que la url resultante sea: /foo/bar/baz

¿Hay alguna forma de evitar esto sin reparar los rieles?

+0

oops resulta que Rubyonrails no es la mejor etiqueta para eso, disculpas. –

Respuesta

4

En lugar de pasar una cadena a la ruta, dele una matriz.

link_to "Foo", :controller => 'foo', :path => %w(bar baz) 
# <a href="/foo/bar/baz">Foo</a> 

Si no tiene la ruta del archivo de rutas, esta misma link_to vez crearía esto:

# <a href="/foo?path[]=bar&path[]=baz">Foo</a> 

El único lugar que podría encontrar esta documentado está en this ticket.

-3

¿Alguna razón por la que necesita generar la URL con esa ruta?

Sería más limpio definir una ruta adicional para cubrir esa URL.

+0

Utilice la función de comentarios para aclaraciones y cosas similares ;-) – webmat

Cuestiones relacionadas