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; })") %>
Некоторым преимуществом этого (немного уродливого) решения является возможность использования одной функции для определенного класса ссылок вместо указанного идентификатора.