Forum: Rails-ES Creacion de rutas - error en link_to y link_to_remote

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D25f44314542c75e511e806a6d1a5777?d=identicon&s=25 Agustin Viñao (agustinvinao)
on 2009-01-16 15:30
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.
0e6c0ba9935b52866fd5c54dd886cf2e?d=identicon&s=25 Jaime Iniesta (Guest)
on 2009-01-16 17:02
(Received via mailing list)
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] %><br >
Subcategoría: <%= h params[:subcategoria] %><br />

<%= link_to 'caca', categoria_path('caca') %><br />
<%= link_to 'culo', categoria_path('culo') %><br />
<%= link_to 'pedo', categoria_path('pedo') %><br />
<%= link_to 'pedo/pis', categoria_subcategoria_path('pedo', 'pis') %><br
/>

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 :P

2009/1/16 Agustin Viñao <ruby-forum-incoming@andreas-s.net>:
> <%= 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
> Ror-es@lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>



--
Jaime Iniesta
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta
D25f44314542c75e511e806a6d1a5777?d=identicon&s=25 Agustin Viñao (agustinvinao)
on 2009-01-16 17:13
(Received via mailing list)
Gracias por la ayuda y muy claros los ejemplos :P

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

Saludos

2009/1/16 Jaime Iniesta <jaimeiniesta@gmail.com>
D25f44314542c75e511e806a6d1a5777?d=identicon&s=25 Agustin Viñao (agustinvinao)
on 2009-01-16 17:41
(Received via mailing list)
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 <agustinvinao@gmail.com>
0e6c0ba9935b52866fd5c54dd886cf2e?d=identicon&s=25 Jaime Iniesta (Guest)
on 2009-01-16 23:27
(Received via mailing list)
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-...

2009/1/16 Agustin Nicolas Viñao Laseras <agustinvinao@gmail.com>:
> 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
>>> Ror-es@lists.simplelogica.net
>>> http://lists.simplelogica.net/mailman/listinfo/ror-es
>>
>
>
> _______________________________________________
> Ror-es mailing list
> Ror-es@lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>



--
Jaime Iniesta
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta
D25f44314542c75e511e806a6d1a5777?d=identicon&s=25 Agustin Viñao (agustinvinao)
on 2009-01-16 23:32
(Received via mailing list)
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 Iniesta <jaimeiniesta@gmail.com>
This topic is locked and can not be replied to.