2009-03-10 9 views
3

ID「foo」のテキストフィールドがあり、時には存在しないこともあります。それが存在するなら、私は一定の価値を記入したいと思います。RJS:既存のページ要素を確認しますか?

RJSRails 2.2)を使用してこれを行う方法はありますか?

私はこれを試してみましたが、それは動作しません:

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

私は

TypeError: Null Value if the textfield doesn't exist

を取得します。

答えて

6

固定ルビー一部..それが存在すれば行動する。 page.selectを使用すると、Null Valueエラーが回避されます。

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

これを私の* .js.rjsファイルに入れました。 selectが空の配列をそれぞれに送信すると、正しいIDを持つDOMオブジェクトがそのページにない場合に、IDで直接選択したときに得られるTypeErrorの代わりに何も返されません。

+0

RJSソリューションをありがとう! – Javier

1

RJSからはできないと思います。回避策として、要素が存在するかどうかをチェックするRJSからjavascriptメソッドを呼び出すことができます。

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

のJavascript ..

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

編集私は私が必要との条件付きのアイテムを持っているこの何倍に作ってみた

+0

魅力のように機能します(それ以外に、 "!= undefined"を使用する必要はありません)。 RJSに解決策がない限り、これが私の解決策になります。 – Javier

関連する問題