1

レールに次のようなリンクがあるとします。

<%= link_to "Next page", url_for(controller: controller_name, action: 'step2'), remote: true, method: :post %>

これは、属性 とのリンクになりますdata-remote="true"。この属性を持つリンクは、AJAX 呼び出しを行う必要があります。

ページの読み込み時に DOM にある場合は、そうです。Rails JS が実行され、data-remote属性が解析され、クリックを ajax 呼び出しに変換するリスナーが設定されます。

ただし、このリンクが動的に読み込まれる場合は、rails js が実行されてすべてが解析された後に DOM に挿入されます。つまり、このリンクを動的にロードすると、クリックしても ajax 呼び出しが行われません。ウィンドウ全体をリンクにリダイレクトするだけです。

これらの属性のdomを再解析し、data-remoteそれらがすべてajax呼び出しを行うようにする、手動で呼び出すことができるrails jsによって提供される関数はありますか?

4

1 に答える 1

2

何もする必要はありません。

rails js は、ロード時にドキュメントを「解析」するのではなく、イベントをドキュメントにバインドします。したがって、新しい要素を作成してイベントをトリガーすると、バブルアップしてとにかく動作します ( の廃止された.live()メソッドのようにjQuery)。

これは、rails jsスクリプトの 290 行目で実際に確認できます。

$(document).delegate(rails.linkClickSelector, 'click.rails', function(e) {

コールバックを正しく定義している限り ( 、 など) ajax:successajax:completeすべてうまくいくはずです。

詳細については、以下をご覧ください。

于 2013-06-28T03:47:02.843 に答える