2009-03-10 23 views
3

Bazen var olan ve bazen olmayan "foo" kimliğine sahip bir metin alanım var. Varsa belirli bir değeri doldurmak isterim.RJS: Mevcut sayfa öğesini kontrol edin?

Nasıl bu (Raylar 2.2 olarak) RJS kullanarak yapacağız?

Bu çalıştı ve çalışmıyor:

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

Ben

TypeError: Null Value if the textfield doesn't exist

olsun.

cevap

6

Sabit yakut parçası .. Varsa harekete geçin. Page.select'i kullanmak Boş Değer hatasını önler.

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

Bunu * .js.rjs dosyasına koydum. Seçim, her birine boş bir dizi gönderdiğinde, sayfadaki doğru kimliğe sahip hiçbir DOM nesnesi olmadığında doğrudan kimlik tarafından seçildiğinde, TypeError yerine hiçbir şey döndürmez.

+0

RJS çözümü için çok teşekkürler! – Javier

1

RJS'den yapabileceğinizi düşünmüyorum. Bir geçici çözüm olarak, öğenin mevcut olup olmadığını kontrol eden RJS'den bir javascript yöntemini çağırabilirsiniz.

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

JavaScript ..

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

Düzenleme ben gereken bir koşullu madde var bu birçok kez geldim

+0

Bir çekicilik gibi çalışır (bunun yanında "! = Undefined" kullanılmasına gerek yoktur). RJS'de bir çözüm olmadığı sürece bu benim çözümüm olurdu. – Javier

İlgili konular