2016-01-07 17 views
1

如果我使用下面一行來設置一個指向javascript函數的onchange動作,它似乎可以工作。鐵軌 - 可以onclick與JavaScript的方法一起工作嗎?

<% @documents.each do |document| %> 
    <td>< %= check_box_tag "document_ids[]", document.id, checked_flag, 
    :onchange => "myFunction(#{document.id})" %></td> 

但是,如果我試圖指向def/method,它不會按預期方式工作。看起來該方法是在每行顯示時調用的。我認爲onchange/onclick只會在更改或點擊時調用操作。

<td><%= check_box_tag "document_ids[]", document.id, checked_flag, {:onchange => handle_checkboxes(document.id,checked_flag)} %></td> 

確實的Ruby/Rails允許你打電話與onchange/onclick的方法有checkbox_tag

我的目標是構建一個數組,我可以在查找中使用它來顯示已檢查的文檔。

def handle_checkboxes(id,flag) 
    $doc_ids.push(id.to_s) 
    $test2[id] = 'push' 
    $test3 = 'We arrived' 
end 

如果我使用checkbox_tag與方法變量看起來像

$ doc_ids.inspect [ 「9999999」, 「21」, 「22」, 「23」, 「24」, 「25」,「26」,「27」,「28」,「29」]

$ test2.inspect [,,,,無,無,無,無,無,零,零,無,零,無,「推」,「推」,「推」,「推」,「推」,「推」 ,「推」,「推」]

但是如果我點擊某些複選框,似乎沒有任何變化。

+0

對於運行ruby代碼(服務器)的JavaScript(客戶端),您需要使用請求調用服務器。 –

回答

3

我覺得這個問題缺乏一些認真的概念知識。在客戶端觸發onchange,'在瀏覽器中'。您無法在服務器中爲該事件觸發回調函數。您應該擁有一個JavaScript函數,它可以執行ajax調用來執行您打算在服務器端執行的操作。

編輯:頁面中的所有Ruby代碼都在您的服務器中執行,並且生成的html和js是唯一發送給瀏覽器的代碼。

相關問題