我有如下代码(这是一个远程表单)
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状态代码。
确实如此。您应该始终返回与您的操作中发生的事情相对应的状态代码,并且状态代码涵盖了许多情况。