为了触发ajax错误,从控制器返回不同于200的代码被认为是一种好习惯吗?

我有以下代码(它是一个远程表单)

def something @user = User.find_by_email(params[:email]) @success = true @error = nil if !@user @success = false @error = "No such user" elsif !@user.some_condition @success = false @error = "User did not pass condition" end respond_to do |format| format.json { render "my_json_view",:status => @success ? 200 : 403 } end end 

my_json_view我做了类似的事情:

 json.response do |json| if @success json.success true # data I need here else json.success false json.error @error end end 

这样,我可以轻松地挂钩到ajax:error事件,并轻松处理错误情况。 我只是想知道这是多么好的做法。 是否可以返回不同的http代码,以便jQuery知道有失败?

当然。 这就是错误代码的用途。 但请确保选择正确的HTTP状态代码 。

它是。 您应该始终返回与您的操作中发生的事件相对应的状态代码,并且状态代码涵盖了许多情况。