0
在我的控制器我有我的行動的一個驗證碼:Rails的通用未找到控制器方法
begin
@user = User.find(params[:id])
@user.destroy
rescue ActiveRecord::RecordNotFound
render :json => {"status" => "404", "message" => "User with id #{params[:id]} not found"}
return
end
而且工作正常,但我不想複製粘貼到所有需要運行的方法一個Select查詢。
於是我找到這個答案How to redirect to a 404 in Rails?
,然後試圖略有不同,因爲我渲染JSON API端點,而不是模板。 請注意,我不知道是否會在那裏定義params [:id]。
def not_found
render :json => {"status" => "404", "message" => "User with id #{params[:id]} not found"}
end
反正我修改查詢用:
@user = User.find(params[:id]) or not_found
但仍是提高的ActiveRecord :: RecordNotFound例外。
也有可能創建一個通用的not_found動作,我可以在所有的控制器中使用它,我可以通過它的ID參數和對象的類型?
像一些通用的404,500,400,200層的方法,其渲染JSON響應,我可以只傳遞一些參數在你的ApplicationController
感謝您的回覆!有了你的代碼,我現在收到一個空的JSON時沒有找到對象,我應該用我的代碼替換渲染json:exception,status :: not_found嗎? – lapinkoira
當然,我的代碼只是一個例子。 –
我明白了,有沒有辦法將此代碼擴展到我的應用程序的所有控制器?或者我必須在所有這些中定義它們。 – lapinkoira