3

RailsでAjax呼び出しを呼び出したい。:remote私はオプションでそうする良い方法を見てきました。私はこの実用的な例を持っています:

<%= button_to('Get Transfers', {:action => 'get_transfers', :section_id => params[:section_id]}, :method => :get, :remote => true) %>

ただし、ユーザーがボタンを押したりリンクをクリックしたりして呼び出しを呼び出すのではなく、Javascriptイベント(要素にカーソルを合わせる)で呼び出すようにします。

を使用する方法はあります:remote => trueが、要素にカーソルを合わせると自動的に呼び出されますか?はいの場合、どのように?

4

1 に答える 1

2

オプション1

ボタンがクリックに応答して他のdivにカーソルを合わせるには、次の操作を試してください。

ビューでは、ボタンに一意のIDを指定し、トリガーとして機能する必要がある要素にクラスを追加します。

<%= button_to('Get Transfers', {action: 'get_transfers', section_id: params[:section_id]}, method: :get, remote: true}, {id: 'remote_hover_button'}) %>
<div class="some_trigger">Hover me!</div>

jsで、そのトリガー要素にバインドし、ボタンのクリックイベントをトリガーします。

$(document).ready(function(){
  $('.some_trigger').hover(function(){
    $('#remote_hover_button').trigger('click');
  });
});

オプション2

ホバーするdivを作成し、呼び出すURLを指定して、ajaxを手動で記述します。

<div class="some_trigger" data-url="<%= url_for(action: 'get_transfers', section_id: params[:section_id]) %>">Hover me!</div>

divにバインドし、ajax呼び出しを実行します。

$(document).ready(function(){
  $('.some_trigger').hover(function(){
    $.ajax($(this).data('url'));
  });
});

これは実際にはアクションをトリガーするだけで、応答に対しては何も実行しません。次のような結果にバインドできます。

$(document).ready(function(){
  $('.some_trigger').hover(function(){
    $.ajax($(this).data('url'))
      .done(function() { alert("success"); })
      .fail(function() { alert("error"); })
      .always(function() { alert("complete"); });
  });
});

ajax関数の詳細については、ドキュメントを参照してください。

于 2013-03-13T10:03:25.573 に答える