Creacion de rutas - error en link_to y link_to_remote

Buenas a todos, estoy intentando armar unas rutas para mi aplicacion,
pero tengo problemas cuando se arman los links con link_to y
link_to_remote, el tema es asi:

Mis rutas en routes.rb son:
map.connect ‘:categoria/:subcategoria’,:controller => “avisos”,:action
=> “listar”
map.connect ‘:categoria’,:controller => “inicio”,:action => “index”

Cuando armo los links pongo:
<%= link_to subcategoria.nombre,
{
:categoria => subcategoria.categoria,
:subcategoria => subcategoria
},
{:title => "Detalle "+subcategoria.nombre}
%>

Pero esto me arma un link de la forma:
/categoriaNombre?subcategoria=subcategoriaNombre

Siendo que el “?subcategoria=subcategoriaNombre” no quiero que tenga ese
formato sino: “/subcategoriaNombre”

La ruta para categoria esta bien y la toma bien y el orden de las rutas
las tengo como indico arriba, con lo cual deberia tomar primero el:
map.connect ‘:categoria/:subcategoria’,:controller => “avisos”,:action
=> “listar”

para armar esa ruta.

Si alguien me puede guiar en que estoy errandole, se los agradeceria.

Hola Agustín, no se si me entero de lo que quieres pero qué tal algo
así:

routes.rb

map.categoria_subcategoria ‘/:categoria/:subcategoria’, :controller
=> “avisos”, :action => “listar”
map.categoria ‘/:categoria’, :controller => “inicio”, :action =>
“index”

para probar en las vistas

Categoria: <%= h params[:categoria] %>

Subcategoría: <%= h params[:subcategoria] %>

<%= link_to ‘caca’, categoria_path(‘caca’) %>

<%= link_to ‘culo’, categoria_path(‘culo’) %>

<%= link_to ‘pedo’, categoria_path(‘pedo’) %>

<%= link_to ‘pedo/pis’, categoria_subcategoria_path(‘pedo’, ‘pis’) %>

O sea, que a las rutas les puedes pasar parámetros según el orden.

Ahora, recuerda que:

The priority is based upon order of creation: first created →

highest priority.

O sea que si pones esas rutas antes de las demás, te anulará muchas de
las siguientes. Recuerda ponerlas según la prioridad que quieras o
añadirle un prefijo para distinguirlas o algo.

Y perdona por mis ejemplos escatológicos pero es lo primero que me ha
venido a la cabeza :stuck_out_tongue:

2009/1/16 Agustin Viñao [email protected]:

<%= link_to subcategoria.nombre,
Siendo que el “?subcategoria=subcategoriaNombre” no quiero que tenga ese

Posted via http://www.ruby-forum.com/.


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta

Gracias por la ayuda y muy claros los ejemplos :stuck_out_tongue:

Ya pude generar las rutas necesarias con el ejemplo que me pasaste.

Saludos

2009/1/16 Jaime I. [email protected]

Me alegro de haber podido ayudarte…

Para lo otro, claro, si te pasan como parámetro “electronica-y-hogar”
y quieres encontrar un modelo cuyo campo contenga “Electrónica y
Hogar” puede ser complicado pq puede haber varios casos, con
mayúsculas, sin ellas, con más espacios, tildes, etc…" O sea que con
el to_param que usas puedes llegar al mismo resultado desde diferentes
cadenas de origen, por ejemplo “ELECTRONICA Y HOGAR” y “Electronica y
hogar”.

Creo que lo mejor sería tener otro campo con la cadena tal cual la vas
a buscar, “electronica-y-hogar”. Una buena manera de gestionar esto
automáticamente con un plugin como sluggable_finder, que te genera
este tipo de campos y se encarga de que no se repitan, etc.:

http://www.estadobeta.com/2007/07/27/plugin-rails-sluggable_finder/

2009/1/16 Agustin Nicolas Viñao Laseras [email protected]:

En este caso tenemos:
item que tiene las correspondientes claves a las tablas categoria y
y como parametro me llega categoria[“electronica-y-hogar”],

=> “avisos”, :action => “listar”
<%= link_to ‘pedo/pis’, categoria_subcategoria_path(‘pedo’, ‘pis’) %><br
añadirle un prefijo para distinguirlas o algo.

map.connect ‘:categoria/:subcategoria’,:controller => “avisos”,:action
%>
map.connect ‘:categoria/:subcategoria’,:controller => “avisos”,:action
http://lists.simplelogica.net/mailman/listinfo/ror-es
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta

Apreovecho a hacer la 2da pregunta del caso.

Ya cree las URLs como queria, en este caso responden al path:

/:categoria/:subcategoria

Para una buena construccion de las urls me quedaria un ejemplo:

/electronica-y-hogar/venta-de-equipos

En este caso tenemos:
Categoria: electronica-y-hogar
Subcategoria: venta-de-equipos

Siendo que las categorias originales son:
Categoria: Electronica y Hogar
Subcategoria: Venta de Equipos

Las modificaciones para la construccion de la URL las hice redefiniendo
el
to_param (
self.nombre.downcase.gsub(/[^[:alnum:]]/,‘-’).gsub(/-{2,}/,‘-’) )
en cada modelo, pero ahora necesito encontrar bajo esos 2 parametros una
item que tiene las correspondientes claves a las tablas categoria y
subcategoria.

Es decir mi modelo es:
Items{
id
nombre
categoria_id
subcategoria_id
}

y como parametro me llega categoria[“electronica-y-hogar”],
subcategoria[“venta-de-equipos”], hay alguna forma de hacer que en un
find
para un campo de texto busque de la misma forma que como quedaria dicho
parametro cuando lo pasa en to_param?

Esto lo pregunto porque con Items.Find_by_nombre(categoria,subcategoria)
no
lo va a encontrar nunca por como los convierte el to_param.

2009/1/16 Agustin Nicolas Viñao Laseras [email protected]

Voy a seguir el consejo y ver ese plugin, tengo en la app el plugin
permalink_fu pero ya le vi el problema que lo unico que hace es quitar
los
caracteres no validos y espacio pero nada mas, si alguien pone el mismo
titulo en 2 posts automaticamente genera un problema

sl2

2009/1/16 Jaime I. [email protected]