Rails, JavaScript y Objeto Session

Hola lista.

De nuevo más problemillas a la hora de integrar Rails con Javascript.

Me gustaría poder guardar una variable en Session, pero se trata de un
valor que sólo puedo acceder mediante Javascript, de forma que
tendría que guardarlo desde
ahí.
Intento en mi script hacer un:

session("variable") = valor;

Pero obtengo un flagrante error en la consola de Javascript diciéndome
que el objeto session no ha sido definido.

¿Cómo puedo guardar dicho valor en la sesión? Y una vez que lo haya
hecho, ¿podría acceder a ese valor desde un método Rails con
session[‘variable’]?

Muchas gracias.

						David

El 28/11/2006, a las 10:49, DaVinci escribió:

Intento en mi script hacer un:

session(“variable”) = valor;

No se puede acceder a la sesion desde JS, ya que esos datos se
manejan del lado del servidor. Puedes enviarselo al controlador con
una peticion AJAX y guardarlo desde ahi

  					David

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


Jorge B. Ordovás [email protected]
http://amedias.org/ [ES]
http://koke.amedias.org/ [EN]

Warp Networks http://www.warp.es/
María de Luna 11, 50018 Zaragoza, España

El martes 28 de noviembre, Jorge B.
escribió:> No se puede acceder a la sesion desde JS, ya que esos datos se

manejan del lado del servidor. Puedes enviarselo al controlador con
una peticion AJAX y guardarlo desde ahi

Mis últimas indagaciones ya apuntaban a una solución de ese tipo.
¿Podrías darme alguna referencia donde pueda ver cómo enviar datos
mediente AJAX?

Muchas gracias por tu ayuda.

						David

El 28/11/2006, a las 12:21, DaVinci escribió:

El martes 28 de noviembre, Jorge B. escribió:

No se puede acceder a la sesion desde JS, ya que esos datos se
manejan del lado del servidor. Puedes enviarselo al controlador con
una peticion AJAX y guardarlo desde ahi

Mis últimas indagaciones ya apuntaban a una solución de ese tipo.
¿Podrías darme alguna referencia donde pueda ver cómo enviar datos
mediente AJAX?

Puedes usar el helper remote_function
http://api.rubyonrails.com/classes/ActionView/Helpers/
PrototypeHelper.html#M000420

O si prefieres hablar en JS directamente:

Muchas gracias por tu ayuda.

  					David

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


Jorge B. Ordovás [email protected]
http://amedias.org/ [ES]
http://koke.amedias.org/ [EN]

Warp Networks http://www.warp.es/
María de Luna 11, 50018 Zaragoza, España

El miércoles 29 de noviembre, DaVinci
escribió:> La pregunta específica sería: ¿Cómo conseguir que el parámetro pasado

al método Rails “mis_cosas” sea el resultado de ejecutar una función
Javascript?

Intentaré detallar un poco mejor el motivo de mi duda, a ver si se os
ocurre algo.

El siguiente código Rails:

remote_function :url => {:action => :metodo,
	:param => "funcionJavascript()"}

Genera en la página definitiva:

new
Ajax.Request('/controlador/metodo?param=funcionJavascript%28%29',
{asynchronous:true, evalScripts:true})

Y lo que yo necesaría es algo del tipo:

new
Ajax.Request('/controlador/metodo?param=' + funcionJavascript(),
{asynchronous:true, evalScripts:true})

¿Cómo puedo conseguir esto al modo Rails, sin tener que incrustar el
código Javascript a pelo?

Gracias.

						David

El martes 28 de noviembre, Jorge B.
escribió:> PrototypeHelper.html#M000420
Esto sigue sin aclararme cómo puedo enviar un dato determinado desde
Javascript a una función de Rails.

Por ejemplo, si intento llamar a un método mediante AJAX en el evento
unload de tendría que hacer algo como:

onunload="<%= remote_function(:url => {:action => :mis_cosas,
:centro => Funcion_Javascrip()}) %>"

La pregunta específica sería: ¿Cómo conseguir que el parámetro pasado
al método Rails “mis_cosas” sea el resultado de ejecutar una
función Javascript?

						David

Hola, yo tengo el mismo problema y la única forma que lo he solucionado
es copiar el html generado por la template y pegarlo en esta. En tu
ejemplo quedaría algo como:

new jax.Request(’/controlador/metodo?param=’+funcionJavascript(),
{asynchronous:true, evalScripts:true})

Copio esto y lo reemplazo por remote_function.

He estado varias horas buscando una solución más “decente”, ojalá
alguien pueda ayudar.