2009-08-17 38 views
1

在Ruby on Rails中,我正在使用內聯RJS並試圖找出通過訪問selectedIndex屬性選擇了哪個選擇選項。出於某種原因無法使這個工作。在RJS中訪問元素的值

因此,例如分配/改變selectedIndex屬性的偉大工程:

page['model_author_id'].selectedIndex = 5 

但是看完它,做RJS內比較不起作用:

if page['model_author_id'].selectedIndex == 0 then xxx end 

我做了調試在Firebug中,似乎RJS生成以下(不正確)代碼 -

$("model_author_id").selectedIndex().= = 0; 

所以,問題是 - 我如何獲得使用RJS的頁面元素的值?

回答

2

RJS只是一個JavaScript生成器,並且直到它的客戶端JavaScript纔會被執行。因此,您仍然無法在Ruby中確定選擇選項的值。

如果您希望對所選值執行「if」語句,則需要在Javascript中執行此操作。

page << "if ($('model_author_id').selectedIndex() == 0) {" 
    page["model_author_id"].selectedIndex = 5 # or whatever you want here 
page << "}" 
+0

非常感謝ryanb的回答,出於某種原因,我在Rails的書籍和論壇上找不到這個答案。實際上,我認爲像我這樣的RJS新手的困難在於差異是非常微妙的 - 是的,RJS是一個JavaScript生成器,但爲什麼它不能爲你生成條件/等等,將Ruby轉換成JS? – Vlad 2009-08-18 17:11:36

+0

這是Ruby語言的限制。 「=」運算符是一種方法,行爲可以被覆蓋,但「if」行爲不能。如果您對JavaScript感到滿意,那麼我建議不要使用RJS。相反,只需將javascript和erb直接混合(使用像index.js.erb這樣的視圖文件)。 – ryanb 2009-08-18 17:16:46