2011-05-03 60 views
3

如果我有以下的javascript代碼Rails3 - 如何使用link_to helper將Javascript變量發送到控制器的動作?

var myVar = 0; 

function setNewValforVar(newValue){ 
    myVar = newValue; 
} 

和我打電話setNewValforVar功能n

所以當我點擊一個鏈接它會myVar值發送到控制器動作在遠程鏈接像

<%=link_to "My Link",{:action=>"myAction"},:data=>''sval='+myVar',:remote=>true%> 

我Rails的2.3.x版本我與

做到這一點

,我和他

params["myVar"] 

得到這個在控制器的動作我怎麼做這個on Rails的3與link_to幫手?

回答

4

Rails 3不再支持這種行爲。您將不得不創建表單來提交值,或者修改鏈接的href以將值包含在查詢字符串中。

+0

我不得不在'onclick'方法中執行一個函數調用,並在其內部執行一個'remote_function' ......它仍然支持這種行爲,謝謝。 – 2011-05-03 21:56:25

3

我發現了一些使用回調的解決方案。鏈路必須通過添加被標記以某種方式,例如id

<%=link_to "My Link", {:action=>"myAction"}, :remote=>true, :id => "mylink" %> 

沒有爲prototype_ujs一個例子:該參數被簡單地附加到請求的URL(代碼比特簡化我假定一些參數已經存在)。

<%= javascript_tag("document.on('ajax:create', 'a#mylink', 
     function(event) { event.memo.request.url += '&sval=' + myVar; })") %> 

這樣的一些優點(難看一個位)的解決方案是使用一個功能特定類的鏈接,而不是所指示的ID的可能性。

相關問題