RJS:检查现有的页面元素?

我有一个id为“foo”的文本字段,有时存在,有时不存在。 如果存在,我想填写一定的价值。

你是如何通过使用RJS (在Rails 2.2中 )这样做的?

我试过这个并不起作用:

if page[:foo] page[:foo].value = "bar" end 

我明白了

TypeError:Null如果文本字段不存在,则为Value

我已经多次出现这种情况,我有一个条件项,如果存在则需要对其进行操作。 使用page.select可以避免Null Value错误。

  page.select('#dom_object_id').each do |element| element.value = "bar" end 

我把它放在我的* .js.rjs文件中。 当select向每个数组发送一个空数组时,它会返回任何内容而不是当在页面上没有具有正确ID的DOM对象时直接通过id选择时得到的TypeError。

我认为你不能从RJS。 作为一种解决方法,您只需从RJS调用javascript方法来检查元素是否存在。

 page << "update_foo('#{my_value}');" 

Javascript ..

 function update_foo(val) { if( $('foo') != undefined ) { $('foo').value = 'bar'; } } 

编辑

修复了ruby部分..