0

Rails newbe here. サーバーへの ajax クエリを実行するリンクがあります。

<%= link_to g.name, g, :class => 'link link-to-gallery', :remote => true %>

部分からデータをロードする JS ビュー:

$('#content').html('<%= escape_javascript render("layouts/galleries/show") %>');

そして、モデルで動作し、html と js をレンダリングするコントローラー:

クラス GalleriesController < ApplicationController
  デフショー
    @galleries = Gallery.all
    @gallery_to_show = Gallery.find(params[:id])
    Respond_to do |フォーマット|
      format.html
      format.js
    終わり
  終わり
終わり

Ajax は正常に動作しますが、ajax が完了した後にコールバックを配置しようとしています。

jQuery(関数() {
  $(".link-to-gallery").bind("ajax:complete", function() {
    アラート(1)
  });
});

アラートは表示されません。私は何を間違っていますか?Rails のバージョンは 3.2.11、Ruby のバージョンは 1.9.3p194 です。

更新: このコードを使用しているとき

jQuery(関数() {
  $(".link-to-gallery")
    .on("ajax:before", 関数 () {
      alert("前")
    }))
    .on("ajax:完了", function() {
      alert("完了")
    });
});

「前」のアラートが発生しますが、一度だけです。もう一度押しても何も得られません。しかし、ajax はまだ動作します。

4

2 に答える 2

0

私は足が不自由ですが、これを修正するのに十分賢いようです。これらのリンクがありました:

<%= link_to g.name, g, :class => 'link link-to-gallery', :remote => true %>

ajaxの後に再レンダリングされるパーシャルで。そのため、これらのリンクに関連付けられていたコールバック関数は、ajax の後でフラッシュされました。したがって、このパーシャルからリンクを配置すると、現在は機能しています。

于 2013-02-01T19:58:04.787 に答える
0

問題は、成功ステータス メッセージ 200 で非同期呼び出しに応答しないコントローラー メソッドにあると思います。

これを試して

def show
  @galleries = Gallery.all
  @gallery_to_show = Gallery.find(params[:id])
  respond_to do |format|
    format.html { :status => 200 }
    format.js { :status => 200 }
  end
end

それがうまくいかない場合は、これを試してください。

def show
  @galleries = Gallery.all
  @gallery_to_show = Gallery.find(params[:id])
  respond_to do |format|
    format.html { :status => :ok }
    format.js { :status => :ok }
  end
end
于 2013-01-31T22:46:42.107 に答える