RJS: ¿Buscar elemento de página existente?
-
08-07-2019 - |
Pregunta
Tengo un campo de texto con el id " foo " eso a veces existe y a veces no. Si existe, me gustaría completar un cierto valor.
¿Cómo se hace esto usando RJS (en Rails 2.2 )?
Intenté esto y no funciona:
if page[:foo]
page[:foo].value = "bar"
end
me sale
TypeError: valor nulo si el campo de texto no existe
.
Solución
Me he dado cuenta de esto muchas veces en el que tengo un elemento condicional sobre el que es necesario actuar si existe. El uso de page.select evita el error de valor nulo.
page.select('#dom_object_id').each do |element|
element.value = "bar"
end
Puse esto en mi archivo * .js.rjs. Cuando el select envía una matriz vacía a cada uno, no devuelve nada en lugar del TypeError que obtendría al seleccionar directamente por id cuando no hay ningún objeto DOM con la ID correcta en la página.
Otros consejos
No creo que puedas de RJS. Como solución alternativa, simplemente puede llamar a un método javascript desde RJS que verifica si el elemento existe.
page << "update_foo('#{my_value}');"
Javascript ..
function update_foo(val)
{
if( $('foo') != undefined )
{
$('foo').value = 'bar';
}
}
Editar
Se arregló la parte rubí ..