Forum: Rails-ES after_update_element en model_auto_completer

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.
9baec5b20d55fcdced48dadd94d96db5?d=identicon&s=25 Jaime Mora Ramones (Guest)
on 2008-10-18 20:10
(Received via mailing list)
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.
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (fxn)
on 2008-10-18 21:58
(Received via mailing list)
2008/10/18 Jaime Mora Ramones <jaime.mora.ramones@gmail.com>:

> }
>
> #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.
9baec5b20d55fcdced48dadd94d96db5?d=identicon&s=25 Jaime Mora Ramones (Guest)
on 2008-10-18 23:32
(Received via mailing list)
El 18 de octubre de 2008 13:57, Xavier Noria <fxn@hashref.com> escribió:

> 2008/10/18 Jaime Mora Ramones <jaime.mora.ramones@gmail.com>:
>
>
> 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.
This topic is locked and can not be replied to.