5

次の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"]

link_toヘルパーを使用してRails 3でこれを行うにはどうすればよいですか?

4

2 に答える 2

4

Rails 3 では、この動作はサポートされなくなりました。フォームを作成して値を送信するかhref、リンクを変更してクエリ文字列に値を含める必要があります。

于 2011-05-03T20:57:40.640 に答える
3

コールバックを使用する解決策を見つけました。リンクは、次のように追加するなど、何らかの方法でマークする必要があります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; })") %>

この (少し醜い) ソリューションの利点は、指定された ID の代わりに、特定のクラスのリンクに対して 1 つの関数を使用できることです。

于 2012-02-02T16:08:37.653 に答える