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部分..