我很新的RoR,我知道ActiveRecord :: RecordNotFound可以映射到HTTP 404錯誤。是否有任何其他資源在軌道上的紅寶石不存在將提高像 ResourceName :: ResourceNameNotFound?資源未找到Ruby on rails的錯誤
RoR引發的錯誤還有520,403,401嗎?
任何幫助,將不勝感激。
我很新的RoR,我知道ActiveRecord :: RecordNotFound可以映射到HTTP 404錯誤。是否有任何其他資源在軌道上的紅寶石不存在將提高像 ResourceName :: ResourceNameNotFound?資源未找到Ruby on rails的錯誤
RoR引發的錯誤還有520,403,401嗎?
任何幫助,將不勝感激。
Rails應該使用正確的HTTP錯誤代碼來響應HTTP協議的約定。我已經與Rails合作了一段時間,並沒有看到任何例外。您也可以提高自己的異常喜歡這個
@record = ModelName.find_by(field_name_goes_here: params[:some_parameter_name_goes_here])
if not @record.blank?
render "view_file_name_goes_here"
else
raise ActiveRecord::RecordNotFound
end
此代碼將導致軌與404 製作爲尚未定義也將導致404
路線的請求作出迴應其他的例子:
在你的代碼如果您使用的設計或其他一些寶石授權將與500
響應語法錯誤,未授權的請求將導致呈現401不會有anyt在Rails中興奮起來,這會讓401開箱即可。請記住,所有請求都是通過routes.rb定義的,並由控制器決定要呈現的響應以及該響應是否應返回HTTP錯誤代碼。
這裏這個問題提供了有關如何使所有類型的錯誤代碼的信息:
Return a specific http status code in Rails
如果您正在尋找調試HTTP錯誤代碼,我建議設置軌道環境的配置要考慮所有的請求作爲本地請求。這將顯示一個可以理解的錯誤。
Purpose of "consider_all_requests_local" in config/environments/development.rb?
感謝您的詳細解釋。但我的問題更像是什麼錯誤會導致軌道響應500,403和401.正如你在答案中所說的,ActiveRecord :: RecordNotFound將導致軌道以404響應,什麼錯誤會導致軌道響應錯誤代碼I有提到過嗎? –
我編輯了我的答案。我希望這有幫助。 –
在軌時,您的特定結果是不匹配 像你提到ActiveRecord::RecordNotFound
和每個錯誤有一個像它的意義,你可以提高錯誤。
401 is for NOT_AUTHORIZED
403 is for FORBIDDEN
500 is for server error
還有許多其他
這就是所謂的異常處理,也有對它的處理線程數:http://blog.siami.fr/diving-in-rails-exceptions-handling或這一個https://medium.com/rails-ember-beyond/error-handling-in-rails-the-modular-way-9afcddd2fe1b我不是很精通這個問題,所以我不能真正推薦一個,但如果你讀了幾個你會有一個很好的概述 – Maxence