それはすべて、そのフォームをサーバーに送信する方法によって異なります。
送信するフォームに:remote => true
属性が設定されている場合、AJAX 呼び出しを介してサーバーに送信され、サーバーはそれを通常の非 ajax フォーム リクエストと区別することができます。
respond_to do |format|
format.js #this renders the <actionname>.js.erb file and executes it on the client
end
jquery_ujs ヘルパーは、サーバーから返された JavaScript コードを実行します。
次のような任意の JavaScript コードを<actionname>.js.erb
ファイルに記述できます。
$('#trigger_link').text('edit comment');
リモート フォームを使用せずに通常の$.ajax
呼び出しを行う場合は、jQuery が提供するコールバックに単純にフックできますがsuccess
、それは明らかだと思います。
アップデート:
問題は、ダイアログを開くきっかけとなったリンクがわからないことです。
通常、どこかにダイアログを開く jQuery 関数があります。トリガー リンクを含む最初のリストをレンダリングするとき、それらをページ上の他のリンクと区別する何らかの方法があると仮定します (おそらく のような css クラスを介して.trigger
)。
その後、次のことができます。
$('.trigger').click(function() {
window.trigger_link = this;
});
上記の小さなスニペットは、ポップアップを開く既存のクリック イベント ハンドラーを上書きしないことに注意してください。それも実行されます。
これで、ウィンドウを開いたリンクを追跡できるようになりました (トリガー リンクをクリックするとウィンドウが開き、最後にクリックされたトリガー リンクが常に保存されます)。フォームが送信されたら、次の操作を実行できます。
$(window.trigger_link).text('edit comment');
window.trigger_link は正しいリンクを参照しているためです。