1

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

这是我的观点:

<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');});
});
4

3 回答 3

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' %>
于 2012-09-06T23:46:18.727 回答
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块那么优雅,但它似乎可以按预期可靠地工作。

祝你好运!

于 2012-09-07T01:02:01.287 回答
0

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

//= require jquery-ui-1.8.23.custom

真丢脸!

于 2012-09-07T01:51:41.687 回答