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?

Mr_Nizzle
  • 6,644
  • 12
  • 55
  • 85

2 Answers2

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.

Austin Taylor
  • 5,437
  • 1
  • 23
  • 29
  • 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. – Mr_Nizzle May 03 '11 at 21:56
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.

Mareq
  • 1,311
  • 2
  • 12
  • 15