Rails3 - How to send Javascript Variable to a controller's action with the link_to helper?

那年仲夏 提交于 2019-12-18 06:51:36

问题


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?


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/5875448/rails3-how-to-send-javascript-variable-to-a-controllers-action-with-the-link

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!