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

2

5

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?

Pneumothorax answered 3/5, 2011 at 20:40 Comment(0)
V
4

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.

Vosges answered 3/5, 2011 at 20:57 Comment(1)
I Had to do a function call in the onclick method and a remote_function inside of this... which it's still supporting the behavior, Thanks.Pneumothorax
T
3

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.

Tolbooth answered 2/2, 2012 at 16:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.