Rescatar query string... pero con un "#" entremedio

hola que tal, tengo un problema relativamente sencillo pero que no he
podido dar con la solucion.
Estoy ocupando rsh para generar una navegacion ajax dentro de mi
proyecto rails. cada vez que genero un estado nuevo (osea una nueva
llamada ajax) mi url cambia a

:www.algo.com/accion#var=estado

necesito rescatar esa variable “var”. o por ultimo que me entrege TODO y
yo la desconpongo a mano para obtener el valor (utilizando split)

query_string() lamentablemente no me sirve.

el comando de javascript document.url lee la url tal como la necesito.
abra alguna manera de entregarle un valor javascript a una variable
ruby?

son varias preguntas en una… pero todas van a lo mismo.
desde ya muchas gracias a todos

2009/1/17 Rodrigo M. [email protected]

query_string() lamentablemente no me sirve.

Fíjate en lo que hace query_string():

def query_string
@request.query_string
end

En el objeto request[1] tienes toda la información que necesitas.

[1]
http://api.rubyonrails.org/classes/ActionController/AbstractRequest.html


Diego Fernández Fernández

Y en javascript se recupera con:

var anchor = document.location.hash;

On Sat, Jan 17, 2009 at 7:12 PM, Diego Fernandez

Fernando B. wrote:

Y en javascript se recupera con:

var anchor = document.location.hash;

On Sat, Jan 17, 2009 at 7:12 PM, Diego Fernandez

Fernando, lo que me dices es justo lo que necesito, pero el problema es
como se lo entrego a una variable ruby?

Diego Fernandez wrote:

2009/1/17 Rodrigo M. [email protected]

query_string() lamentablemente no me sirve.

F�jate en lo que hace query_string():

def query_string
@request.query_string
end

En el objeto request[1] tienes toda la informaci�n que necesitas.

[1]
http://api.rubyonrails.org/classes/ActionController/AbstractRequest.html


Diego Fern�ndez Fern�ndez

http://simplelogica.net

Estuve probando con varios metodos del objeto request que aparecen en la
API, entre ellos query_string() que me debiera entregar los datos
necesarios a no ser que se encuentre con un #.

no entiendo mucho tu sugerencia, me podrias detallar un poco mas.

Raul M. wrote:

No termino de entender la pregunta y de primeras dir�a que no tienes
muy clara la interacci�n entre javascript (parte cliente) y ruby
(parte servidor), �puedes explicarnos con un poco m�s de detalle qu�
intentas hacer en tu
aplicaci�n?

Es basicamente esto… tengo la siguiente url

www.algo.com/controller/action#var=test

y necesito rescatar la variable, he intentado haciendo un
request.query_string(), pero no funciona solo me devuelve
www.algo.com/controller/action y lo que esta despues del # se lo come.
ruby no me reconoce los parametros a no ser que tenga un ? antes de que
empieze el query string (lo cual tiene logica).

las diferencias las conosco, pero solo pongo como ejemplo el como
rescatar con ruby lo que en javascript hago con un
document.location.hash; o un document.url

solo eso…

gracias por la ayuda

El día 17 de enero de 2009 20:55, Rodrigo M.
[email protected]
escribió:> Es basicamente esto… tengo la siguiente url

www.algo.com/controller/action#var=test

¿Esa es la URL que envías en la llamada ajax? ¿No te sería más fácil
enviar el valor de var como un parámetro normal dentro de tu llamada
Ajax?

Raul M. wrote:

El d�a 17 de enero de 2009 20:55, Rodrigo M.
[email protected]
escribi�:> Es basicamente esto… tengo la siguiente url

www.algo.com/controller/action#var=test

�Esa es la URL que env�as en la llamada ajax? �No te ser�a m�s f�cil
enviar el valor de var como un par�metro normal dentro de tu llamada
Ajax?

lo que pasa es que ese parametro lo agrega RSH (Really Simple History
(RSH): Ajax history and bookmarking library). y no puedo sacar el #, ya
que ese es el genera un estado y a la larga el que me permite generar la
navegabilidad en una aplicacion full ajax.

no se si me explico muy bien…

No termino de entender la pregunta y de primeras diría que no tienes
muy clara la interacción entre javascript (parte cliente) y ruby
(parte servidor), ¿puedes explicarnos con un poco más de detalle qué
intentas hacer en tu
aplicación?

El día 17 de enero de 2009 21:12, Rodrigo M.
[email protected] escribió:

lo que pasa es que ese parametro lo agrega RSH (Really Simple History
(RSH): Ajax history and bookmarking library). y no puedo sacar el #, ya
que ese es el genera un estado y a la larga el que me permite generar la
navegabilidad en una aplicacion full ajax.

Perdona, no había visto esto (y no conocía RSH) :slight_smile: Creo que al
dispatcher de rails no le llega ese parámetro así de primeras te diría
que antes de realizar las llamadas ajax capturaras ese estado de la
URL mediante javascript y lo añadieras a tu petición como un valor
normal y no como #anchor

De todas formas parece que ese estado se usa solamente a nivel de
navegador, ¿no? (ya te digo que no estoy familiarizado con este tema).

Estuve probando con varios metodos del objeto request que aparecen en la
API, entre ellos query_string() que me debiera entregar los datos
necesarios a no ser que se encuentre con un #.

no entiendo mucho tu sugerencia, me podrias detallar un poco mas.

Mi sugerencia es una buena mierda. Pensé que en la request_uri te
llegaría
todo, pero como bien comenta Raul M. tus parámetros #var no lo
hacen.

Y esto me pasa por enteradillo.

Siento haberte hecho perder el tiempo :frowning:


Diego Fernández Fernández

Diego Fernandez wrote:

Estuve probando con varios metodos del objeto request que aparecen en la
API, entre ellos query_string() que me debiera entregar los datos
necesarios a no ser que se encuentre con un #.

no entiendo mucho tu sugerencia, me podrias detallar un poco mas.

Mi sugerencia es una buena mierda. Pensé que en la request_uri te
llegaría
todo, pero como bien comenta Raul M. tus parámetros #var no lo
hacen.

Y esto me pasa por enteradillo.

Siento haberte hecho perder el tiempo :frowning:


Diego Fernández Fernández

http://simplelogica.net

Estimados, bueno solucione el problema, de la manera en que siempre lo
debi haber hecho, hice toda la lógica que necesitaba con javascript. me
costo un poco, pero finalmente consegi el propósito.

De igual manera es lamentable que ruby no reconozca los parámetro
después del #. en muchas ocasiones me parece que puede ser muy util.

desde ya saludos y muchas gracias por su tiempo.

Saludos

ojo, que no necesariamente tiene por qué ser culpa del framework. podría
darse el caso de que sea una implementación del propio navegador y/o
servidor web, ya que al saber que lo que venga detrás de la almohadilla
se refiere a un anchor del documento web, al servidor web le resulta
totalmente indifirente y simplemente lo elimina de la uri al hacer la
petición. de hecho acabo de hacer una prueba en el apache pidiendo el
documento /index.htm#foo y mirando los logs, veo como sólo se pide
/index.htm (sin embargo si pides /index.htm?foo=bar, esto sí que se ve
reflejado en los logs)

saludos

Rodrigo M. escribió:

2009/1/18 Rodrigo M. [email protected]:

De igual manera es lamentable que ruby no reconozca los parámetro
después del #. en muchas ocasiones me parece que puede ser muy util.

Como te dice Martín, no es que “Ruby no reconozca” el ancla.
Simplemente que esta parte de la URI no se envía como parte del pedido
al servidor HTTP.

Tiene lógica, ya que esto sólo es una marca que resuelve el navegador
(y por eso se usa para mantener cierto tipo de estado entre peticiones
de Ajax).

“When a client wants to retrieve a hash URI, then the HTTP protocol
requires the fragment part to be stripped off before requesting the
URI from the server. This means a URI that includes a hash cannot be
retrieved directly, and therefore does not necessarily identify a Web
document. But we can use them to identify other, non-document
resources, without creating ambiguity.” –

El 18/01/2009, a las 23:54, Rodrigo M. escribió:

De igual manera es lamentable que ruby no reconozca los parámetro
después del #. en muchas ocasiones me parece que puede ser muy util.

Al igual que a mi me parece lamentable que se critique sin saber.

El anchor no se envía, así que como el internet explorer y firefox
estarán hechos en C/C++ … la cúlpa de todo la tienen esos lenguajes
malignos.

Lo que se suele hacer para leer eso, es ejecutar un script en la
página y que este se chive al servidor de que narices tiene el usuario
en el hash.

De todas formas, si quieres saber por qué se produce eso, te
recomiendo los rfc de uri, de url, de http y de html. Con su lectura
está la comprensión de la almohadilla.


Guillermo Álvarez Fernández
[email protected]
http://cientifico.net

Raul M. wrote:

El día 17 de enero de 2009 21:12, Rodrigo M.
[email protected] escribió:

lo que pasa es que ese parametro lo agrega RSH (Really Simple History
(RSH): Ajax history and bookmarking library). y no puedo sacar el #, ya
que ese es el genera un estado y a la larga el que me permite generar la
navegabilidad en una aplicacion full ajax.

Perdona, no había visto esto (y no conocía RSH) :slight_smile: Creo que al
dispatcher de rails no le llega ese parámetro así de primeras te diría
que antes de realizar las llamadas ajax capturaras ese estado de la
URL mediante javascript y lo añadieras a tu petición como un valor
normal y no como #anchor

De todas formas parece que ese estado se usa solamente a nivel de
navegador, ¿no? (ya te digo que no estoy familiarizado con este tema).

exacto, pero estoy tratando de utilizarlo para poder guardar direcciones
como favoritos, osea, mesclar “navegabilidad” ajax(poder efectivamente
hacer un back en la navegacion) y también poder acceder via favoritos.

creo que la solución va por ahi, hacer todo a nivel javascript, creo que
estoy tratando de utilizar ruby donde no debo.

Guillermo Álvarez Fernández wrote:

De igual manera es lamentable que ruby no reconozca los parámetro
después del #. en muchas ocasiones me parece que puede ser muy util.

Al igual que a mi me parece lamentable que se critique sin saber.

Guillermo que tal, no estoy criticando, solo estoy diciendo que me
parecería útil. Claramente antes de preguntar y de decir eso no había
leido el link que recomienda leer Damian y si estoy preguntando es por
que no se del tema. ahora ya me queda mucho mas clara la utilidad de la
almohadilla y su uso correcto.

Saludos y gracias

Rodrigo