当我尝试实现ajax时,我收到“在13ms内无法接受406(ActiveRecord:0.6ms)”错误。代码在普通的html中工作,没有任何respond_to
块。我把问题缩小到respond_to
块,现在我很难过。 SO& S上的其他解决方案都没有谷歌相同的错误似乎适用或工作。
respond_to
块时出现406错误的原因是html还是包含ajax / js?redirect_to
respond_to
块中使用format.html
,如下面的代码所示?如果您需要更多信息,请与我们联系
查看(haml):
普通的html代码
%div.control-group.controls
= button_to "Delete Gcal User", @gcal_user, method: :delete, class: "btn btn-danger"
AJAX代码
%div.control-group.controls
= button_to "Delete Gcal User", @gcal_user, method: :delete, remote: true, class: "btn btn-danger"
AJAX的JS代码(coffeescript)
$('#calendar').empty();
控制器:
class GcalUsersController < ApplicationController
def destroy
@gcal_user = current_user.gcal_user
# if @gcal_user.delete
# flash[:notice] = "#{@gcal_user.username} deleted"
# end
# redirect_to user_root_path # <-- using this in html mode, app works i.e. no 406 error
respond_to do |format|
format.html { redirect_to(user_root_path) } # <-- using this in html mode instead of above line, app fails i.e. 406 error
# format.js # <-- using this in ajax mode, app fails i.e. 406 error
end
end
end
答案 0 :(得分:0)
你想用“json”回复,而不是用“js”回答(这意味着JavaScript)。 jquery_ujs
,为method: :delete
添加功能的gem,需要JSON。
def destroy
@gcal_user = current_user.gcal_user
@gcal_user.delete
respond_to do |format|
format.html { redirect_to user_root_path }
format.json { head :no_content }
end
end
答案 1 :(得分:0)
问题是由路线引起的。使用单数resource :gcal_user
代替复数resources :gcal_users
会导致URL格式不同。单数资源使用“/gcal_user.[id]”,这导致respond_to
块认为格式必须在“。[id]”而不是“.js”或“.html”。
请参阅Respond_to does not redirect, gives 406 Not Acceptable error