Hola,
En en el plugin [1] model_auto_completer, after_update_element se
utiliza
para especificar una función javascript que será llamada cuando el
usuario
seleccione un elemento de la lista. Esta función recibe cuatro
argumentos:
el text_field, el elemento seleccionado de la lista, el campo oculto y
el
model id. Bien, mi duda es en la definición de esta función;
anteriormente
simplemente definia la función con sus cuatro argumentos y funcionaba,
pero
ahora debe evaluar a un puntero a una función :
javascripts/application.js
Esta forma ya NO funciona envia el error: value es nulo ó no es un
objeto
function after_consulta_paciente(element, selected, hf, model_id) {
alert(element.value);
}
De esta forma SI funciona, evaluando a un puntero a una función :
function after_consulta_paciente() {
return function (element, selected, hf, model_id) {
alert(element.value);
}
}
#views/consultas/_form.html.erb
<%= belongs_to_auto_completer :consulta, :paciente, :nombre_completo, {
:after_update_element => “after_consulta_paciente()” } %>
Evidentemente esto me permite continuar sin ningún problema, pero bueno
me
surgió la duda.
[1] http://model-ac.rubyforge.org/
Gracias por la ayuda.
Un saludo.
2008/10/18 Jaime Mora R. [email protected]:
}
#views/consultas/_form.html.erb
<%= belongs_to_auto_completer :consulta, :paciente, :nombre_completo, {
:after_update_element => “after_consulta_paciente()” } %>
Evidentemente esto me permite continuar sin ningún problema, pero bueno me
surgió la duda.
Hola Ramon.
Esa opcion recibe una cadena JavaScript que evalue a una funcion.
Ahi tienes dos opciones, o bien escribir algo asi:
:after_update_element => ‘function (…) { … }’
o bien tener la funcion definida en otro sitio y configurar su nombre:
:after_update_element => ‘after_consulta_paciente’
Fijate que no hay parentesis, no es una llamada. Esto funciona asi
porque en JavaScript como en C el nombre de una funcion evalua a la
funcion misma (en C un puntero). Mientras que en Ruby se entiende que
simplemente estas obviando los parentesis.
El 18 de octubre de 2008 13:57, Xavier N. [email protected] escribió:
2008/10/18 Jaime Mora R. [email protected]:
Hola Ramon.
Fijate que no hay parentesis, no es una llamada. Esto funciona asi
porque en JavaScript como en C el nombre de una funcion evalua a la
funcion misma (en C un puntero). Mientras que en Ruby se entiende que
simplemente estas obviando los parentesis.
Entendido Xavi. Muchas gracias.