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

.

¿Fue útil?

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í ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top