Rails3 - 如何使用link_to帮助程序将Javascript变量发送到控制器的操作?

时间:2011-05-03 20:40:49

标签: ruby-on-rails-3 link-to link-to-remote

如果我有以下javascript代码

var myVar = 0;

function setNewValforVar(newValue){
    myVar = newValue;
}

我打电话setNewValforVar函数n

因此,当我点击某个链接时,它会将myVar值发送到远程链接中的控制器操作,例如

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

I Rails 2.3.x我会用

执行此操作
<%=link_to_remote "My Link",:url=>{:action=>"myAction"},:with=>"'sval='+myVar"%>

我正在使用

控制器的操作
params["myVar"]

如何使用link_to帮助程序在Rails 3上执行此操作?

2 个答案:

答案 0 :(得分:4)

Rails 3不再支持此行为。您必须创建表单以提交值,或修改链接的href以将值包括在查询字符串中。

答案 1 :(得分: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。