アプリケーションの後にこのようなクラスの名前を付けて、lib/my_app/. たとえば、アプリがFooBarフォルダーを持っていて、クラスを次のようlib/foo_bar/apiに定義する場合lib/foo_bar/api/error.rb
class FooBar::Api::Error
# ...
end
これはで呼び出すことができますFooBar::Api::Error.new(...)
このルートを選択した場合はlib/、config.autoload_pathsconfig/application.rb
config.autoload_paths += Dir["#{config.root}/lib"]
render errorコードがエラーステータスコードを返すようにする方法を知っていますか? 使用していない(:status => error.status)
確かに、しかし私の知る限り、あなたはただ合格することはできませんerror. 次のようなものを呼び出す必要があります
error = FooBar::Api::Error.new({ message: "Some error message" }, status: :bad_request)
render *error.to_a
to_a次に、メソッドを定義する必要がありますFooBar::Api::Error
class FooBar::Api::Error
def initialize(data={}, options={})
@data = data
@options.reverse_merge! status: 200
end
def to_a
[@data, @options]
end
end
を呼び出すerror.to_aと、渡す引数のリストを含む配列が返されますrender。上記* のレンダリング行の は Splat 演算子 (詳細はこちらrender) で、返された配列全体を最初の引数として送信する代わりに、渡す引数のリストに配列を展開します。