2011-05-03 62 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的可能性。

相关问题