Ocultar params en url

217 views
Skip to first unread message

Jose Vicente Martinez Mendoza

unread,
Jun 4, 2014, 3:16:31 AM6/4/14
to rub...@googlegroups.com

Hola,

 

 

Estoy construyéndome un típico formulario de búsqueda con muchos campos de filtrado.

 

Estoy siguiendo el screencast


http://railscasts.com/episodes/37-simple-search-form?view=comments


Todo me funciona correctamente pero quiero evitar que todos los parámetros del formulario me aparezcan en la url.

 

/movements/search?utf8=&search=agua&precio=10

 

Hay alguna solución limpia para hacer esto? 

La solución que he visto es en lugar de hacer un :get hacer un :post, es la mejor opción?


Un saludo y gracias.


--

Carlos Mathiasen

unread,
Jun 4, 2014, 7:26:30 AM6/4/14
to rub...@googlegroups.com
Pasa que en ese ejemplo está usando un metodo GET, por eso los params van por la URL. Deberías hacer un metodo POST, te dejo un post[0] que te puede ayudar.
Como consejo fijate la fecha de los posts que ves, ese es del 2007, Rails cambió mucho desde entonces, al menos que estes utilizando una version antigua de Rails.
También podes ver en las guías de rails[1] hay mucha info sobre routing tambien
Saludos,

Matt's

Ezequiel Gonzalez Rial

unread,
Jun 4, 2014, 8:05:09 AM6/4/14
to rub...@googlegroups.com
Hola Jose,

Sí, el cambio de get a post va a permitir que tengas URLs más limpias, pero tiene sus ventajas y sus desventajas.

La principal ventaja es que no podes llamar a la sección específica sin pasar por un form. Lo cuál puede estar bien si es para una sección de búsqueda, pero si lo tenés asociado a lo que tradicionalmente sería un link, agrega un nivel extra de complejidad.

Lo que perdes al querer simplificar las URLs es que estás anulando la capacidad de que el usuario pueda compartir esa página, ya que sí o sí tiene que pasar por un form. Además, no podes hacer uso de cache transparentes (Varnish y compañia) para no tener que andar haciendo el mismo cómputo 20 veces y puede traer un par de dolores de cabeza en algunos browsers viejos si queres mantener estados con el adelante/atrás del histórico.

Filosóficamente perdés mucho con la transición, pero si es una necesidad de tu lógica de negocio y lo justifica, pues haz el cambio.

Saludos,

Ezequiel


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Damian Janowski

unread,
Jun 4, 2014, 9:10:10 AM6/4/14
to rub...@googlegroups.com
2014-06-04 4:16 GMT-03:00 Jose Vicente Martinez Mendoza <joma...@gmail.com>:
> Todo me funciona correctamente pero quiero evitar que todos los parámetros
> del formulario me aparezcan en la url.

Para qué?

Gonzalo Arreche

unread,
Jun 4, 2014, 9:11:52 AM6/4/14
to rub...@googlegroups.com, Ezequiel Gonzalez Rial
Buenas,
Dudo que se justifique cambiar ese form a POST. Éste método es usado para realizar cambios sobre algún recurso, y vas a encontrarte con muchas situaciones en la que esto te va a complicar.
No es necesario ir a browsers viejos, la versión actual de Chrome aún te pide confirmación para recargar una página que fue pedida por POST. Esto tiene mucho sentido en la mayoría de los casos, pero no en este. Estos problemas van a ser síntomas claros de que probablemente no estés usando el método correcto.

Mi recomendación, es que saques el helper de rails y lo hagas directamente con HTML.

<form action="<%= search_path ... %>" method="GET">
<input type="text" name="search" />
<!-- o -->
<%= text_field_tag "precio" %>
<%= submit_tag %>
</form>

-- 
Gonzalo Arreche

Gonzalo Arreche

unread,
Jun 4, 2014, 9:15:04 AM6/4/14
to rub...@googlegroups.com, Damian Janowski
En realidad es una buena pregunta. Yo supuse que sólo quería sacar el "utf8=✓".

-- 
Gonzalo Arreche
--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Hernan Fernandez

unread,
Jun 5, 2014, 9:28:04 AM6/5/14
to rub...@googlegroups.com
EL parámetro utf8 es para solucionar un bug en IE que tiene problemas
con POST requests en utf8, es para asegurarse de que al menos un
caracter del form esta en utf8.
deberías poder sacarlo sin problemas para un GET.

Hernan
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

Damian Janowski

unread,
Jun 5, 2014, 9:34:27 AM6/5/14
to rub...@googlegroups.com
2014-06-05 10:28 GMT-03:00 Hernan Fernandez <hern...@gmail.com>:
> EL parámetro utf8 es para solucionar un bug en IE que tiene problemas
> con POST requests en utf8, es para asegurarse de que al menos un
> caracter del form esta en utf8.
> deberías poder sacarlo sin problemas para un GET.

No estoy al tanto de los pormenores de los problemas de IE, pero creo
que el bug afecta también a los GET (hasta hace muy poco, Google tenía
ese parámetro en todas las URLs de las búsquedas).

Jose Vicente Martinez Mendoza

unread,
Jun 6, 2014, 6:11:40 AM6/6/14
to rub...@googlegroups.com
Muchas gracias a todos por las respuestas.

El motivo por el que no quiero los parametros en la URL es porque tengo 6 o 7 parametros de busqueda y no me gusta mucho que salga todo en la url.
El problema de compartir la url lo asumo sin problemas porque es para una busqueda en zona privada que lo logico es que no la puedas compartir.

El tema de la recarga ya no me gusta tanto y lo voy a valorar.

Un saludo.


--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.



--

Damian Janowski

unread,
Jun 6, 2014, 1:19:13 PM6/6/14
to rub...@googlegroups.com
2014-06-06 7:11 GMT-03:00 Jose Vicente Martinez Mendoza <joma...@gmail.com>:
> Muchas gracias a todos por las respuestas.
>
> El motivo por el que no quiero los parametros en la URL es porque tengo 6 o
> 7 parametros de busqueda y no me gusta mucho que salga todo en la url.
> El problema de compartir la url lo asumo sin problemas porque es para una
> busqueda en zona privada que lo logico es que no la puedas compartir.
>
> El tema de la recarga ya no me gusta tanto y lo voy a valorar.

Rompe la recarga, rompe los caches, rompe el 'Back' del browser, rompe
el bookmarking. En fin, estás usando mal HTTP.

Quizás podrías esforzarte en que la URL quede más linda sin usar el
query string.

O si lo que querés es solo ocultar, podrías meter todos los parámetros
de búsqueda en un solo parámetro encodeado en base 64. Es feísimo,
pero por lo menos no rompe todas las expectativas de cómo funciona la
web.
Reply all
Reply to author
Forward
0 new messages