を見つけていない、私は私の行動の一つに、このコードを持っていますa Selectクエリ。Railsは、一般的な私のコントローラでは、コントローラのメソッド
だから私は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例外を上げています。
また、idパラメータとオブジェクトの型を渡すことができるすべてのコントローラで使用できる一般的なnot_foundアクションを作成することは可能でしょうか?
class ApplicationController
rescue_from ActiveRecord::RecordNotFound, with: :show_not_found_errors
# All the information about the exception is in the parameter: exception
def show_not_found_errors(exception)
render json: {error: exception.message}, status: :not_found
end
end
をこのように、任意のActiveRecordの:: RecordNotFound:いくつかの一般的な404、500、400、私はちょうどあなたのApplicationControllerにしていくつかのパラメータに
ありがとうございます!あなたのコードでは、オブジェクトが見つからないときに空のJSONを受け取っています。レンダリングjsonを置き換えるべきですか?exception、status :: not_found with my code? – lapinkoira
もちろん、私のコードは単なる例です。 –
私のアプリケーションのすべてのコントローラにこのコードを拡張する方法はありますか?私はそれらをすべて定義しなければなりません。 ApplicationController内の@lapinkoiraの – lapinkoira