Rails3 - Как отправить переменную Javascript в действие контроллера с помощником link_to? - PullRequest
4 голосов
/ 04 мая 2011

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

var myVar = 0;

function setNewValforVar(newValue){
    myVar = newValue;
}

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

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

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

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

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

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

params["myVar"]

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

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

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

3 голосов
/ 02 февраля 2012

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

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

...