Rails 3.2.8没有触发ajax回调

时间:2012-09-06 23:40:52

标签: ruby-on-rails ruby ajax ruby-on-rails-3 callback

我遇到了rails 3.2.8和ajax回调的问题......似乎那些根本没有触发......我尝试用Jquery代码绑定(我可以在chrome工具箱上看到js脚本)我甚至试过把:success => link_to行上的'alert(“bla”)',但它仍然没有做任何事情......控制器工作,因为我的行实际上被删除了...但是无法绑定到回调!请帮忙!

以下是我的观点:

<td><%= link_to 'Destroy', pet, :method => :delete, :remote=>true, :class => 'delete_pet' %></td>

这是我的控制器动作

def destroy
    @pet = Pet.find(params[:id])
    @pet.destroy

    respond_to do |format|
      format.html { redirect_to(pets_url) }
      format.js { render :nothing => true }
    end
  end

这是我的js代码:

jQuery(function($) {
    $('.delete_pet').bind("ajax:before", function(){alert('bla2');})
                    .bind("ajax:success", function(){alert('bla2');})
                    .bind("ajax:failure", function(){alert('bla2');})
                    .bind("ajax:complete", function(){alert('bla2');});
});

3 个答案:

答案 0 :(得分:0)

替换

 format.js { render :nothing => true }

 format.json { render :nothing => true }

并替换

<%= link_to 'Destroy', pet, :method => :delete, :remote=>true, :class => 'delete_pet' %>

<%= link_to 'Destroy', pet, :method => :delete, :remote=>true, 'data-type'=>'json', :class => 'delete_pet' %>

答案 1 :(得分:0)

我遇到了respond_to块的类似问题。我通过检查request暂时解决了这个问题。例如,您的代码如下所示:

def destroy
  @pet = Pet.find(params[:id])
  @pet.destroy

  if request.xhr? 
    # the request was received via an AJAX request
    render :nothing => true
  else
    redirect_to(pets_url)
  end
end

不像resond_to块一样优雅,但似乎可靠地按预期工作。

祝你好运!

答案 2 :(得分:0)

问题在于我的application.js我手动包含了一个jquery文件......就像这样..

//= require jquery-ui-1.8.23.custom
对我感到羞耻!