Hola,
Estoy intentando hacer más DRY el uso del :after_update_element en el
siguiente código:
views/productos/_form.html.erb
<%= belongs_to_auto_completer :producto, :presentacion1, :nombre,
:after_update_element => “after_producto_presentacion1” %>
<%= belongs_to_auto_completer :producto, :presentacion2, :nombre,
:after_update_element => “after_producto_presentacion2” %>
javascripts/application.js
function after_producto_presentacion1(element, selected, hf, model_id) {
$$(“div[class=‘pres1’]”).each(function(pres1) {
pres1.update(element.value);
});
}
function after_producto_presentacion2(element, selected, hf, model_id) {
$$(“div[class=‘pres2’]”).each(function(pres2) {
pres2.update(element.value);
});
}
¿ Es posible utilizar una sola función y resolver mediante un parametro
(en
este caso “1” ó “2”) ?
Muchas gracias.
On Tue, Jul 22, 2008 at 5:01 PM, Jaime Mora R.
[email protected] wrote:
});
}
function after_producto_presentacion2(element, selected, hf, model_id) {
$$(“div[class=‘pres2’]”).each(function(pres2) {
pres2.update(element.value);
});
}
¿ Es posible utilizar una sola función y resolver mediante un parametro (en
este caso “1” ó “2”) ?
Por ejemplo podrias usar 3 funciones:
function after_producto_presentacion1(element, selected, hf, model_id) {
after_producto_presentacion(“1”, element, selected, hf, model_id)
}
function after_producto_presentacion2(element, selected, hf, model_id) {
after_producto_presentacion(“2”, element, selected, hf, model_id)
}
function after_producto_presentacion(n, element, selected, hf, model_id)
{
$$(“div.pre” + n).each(function(pres) {
pres.update(element.value);
});
}
2008/7/27 Xavier N. [email protected]
Por ejemplo podrias usar 3 funciones:
Hola Xavier,
Primeramente muchas gracias. Estoy buscando una forma de utilizar una
sola
función y parametrizar desde la vista, de esta forma :
<%= belongs_to_auto_completer :producto, :presentacion1, :nombre,
:after_update_element => “after_producto_presentacion(‘1’)” %>
En estos momentos estoy estudiando el método
determine_completion_options en
el model_auto_completer_helper y tratar de encontrar una solución.
Entiendo
que el hook after_update_element está firmado con esos 4 parámetros, la
tarea aqui es brincar esa barrera.
Un saludo.
El 29 de julio de 2008 2:09, Xavier N.[email protected]escribió:
Lo he escrito sobre la marcha pero ves que quiero decir.
Hola Xavier,
Funcionó bastante bien. Unicamente le agregué un parentesis y una llave
de
cierre del each :
function after_producto_presentacion(n) {
return function (element, selected, hf, model_id) {
$$(“div.pres” + n).each(function(pres) {
pres.update(element.value);
});
}
}
Muchas gracias !
Un saludo.
On Tue, Jul 29, 2008 at 6:30 AM, Jaime Mora R.
[email protected] wrote:
<%= belongs_to_auto_completer :producto, :presentacion1, :nombre,
:after_update_element => “after_producto_presentacion(‘1’)” %>
En estos momentos estoy estudiando el método determine_completion_options en
el model_auto_completer_helper y tratar de encontrar una solución. Entiendo
que el hook after_update_element está firmado con esos 4 parámetros, la
tarea aqui es brincar esa barrera.
:after_update_element esta modelado de acuerdo a su primo hermano en
el plugin auto_complete.
Debe evaluar a un puntero a una funcion, por lo tanto podrias
construir una clausura de esta guisa (no lo he probado):
function after_producto_presentacion(n) {
return function (element, selected, hf, model_id) {
$$(“div.pre” + n).each(function(pres) {
pres.update(element.value);
};
}
Lo he escrito sobre la marcha pero ves que quiero decir.