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

发布于 2024-11-05 01:34:05 字数 651 浏览 6 评论 0原文

如果我有以下 JavaScript 代码

var myVar = 0;

function setNewValforVar(newValue){
    myVar = newValue;
}

,并且调用 setNewValforVar 函数 n 次,

那么当我单击链接时,它会发送 myVar 值到像 Rails 2.3.x 这样的远程链接中的控制器操作,

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

我会这样做

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

,并且我在控制器的操作上得到了这个,

params["myVar"]

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

If i have the following javascript code

var myVar = 0;

function setNewValforVar(newValue){
    myVar = newValue;
}

and i'm calling setNewValforVar function n times

so when I click on a link it'd send myVar value to the controller action in a remote link like

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

I Rails 2.3.x I'd do this with

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

and i was getting this on the controller's action with

params["myVar"]

how do I do this on Rails 3 with the link_to helper?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

盗梦空间 2024-11-12 01:34:05

Rails 3 不再支持这种行为。您必须创建一个表单来提交该值,或者修改链接的 href 以将该值包含在查询字符串中。

Rails 3 no longer supports this behavior. You will have to either create a form to submit the value, or modify the href of the link to include the value in the query string.

别在捏我脸啦 2024-11-12 01:34:05

我找到了一些使用回调的解决方案。链接必须以某种方式标记,例如通过添加 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。

I found some solution that use callbacks. Link must be marked in some way, for example by adding the id:

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

There is an example for prototype_ujs: the parameter is simply appended to the request's URL (the code is a bit simplified I assume that some parameters already exist).

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

Some advantage of this (ugly a bit) solution is the possibility of using one function for a particular class of links instead of the indicated id.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文