Rails3 - Как отправить переменную Javascript в действие контроллера с помощником link_to?

Если у меня есть следующий код JavaScript

var myVar = 0;

function setNewValforVar(newValue){
    myVar = newValue;
}

и я звоню setNewValforVar функция n раз

поэтому, когда я нажимаю на ссылку, она отправит myVar значение для действия контроллера в удаленной ссылке, как

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

Я Rails 2.3.x я бы сделал это с

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

и я получал это на действии контроллера с

params["myVar"]

как мне сделать это на Rails 3 с link_to помощник?

2 ответа

Решение

Rails 3 больше не поддерживает это поведение. Вам нужно будет либо создать форму для отправки значения, либо изменить href ссылки для включения значения в строку запроса.

Я нашел какое-то решение, которое использует обратные вызовы. Ссылка должна быть помечена каким-либо образом, например, путем добавления 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; })") %>

Некоторым преимуществом этого (немного уродливого) решения является возможность использования одной функции для определенного класса ссылок вместо указанного идентификатора.

Другие вопросы по тегам