Rails 4.2 ActionController:BadRequest 自定义错误信息

Rails 4.2 ActionController:BadRequest custom error message

如果验证失败或 400 - bad request 缺少参数,我想从我的控制器 return。所以在我的控制器中如果有

if params["patch"].nil? then
  raise ActionController::BadRequest.new( "The Json body needs to be wrapped inside a \"Patch\" key")
end

我在我的应用程序控制器中发现了这个错误:

rescue_from ActionController::BadRequest, with: :bad_request


def bad_request(exception)
  render status: 400, json: {:error => exception.message}.to_json
end

但是我似乎无法在提高 ActionController::BadRequest 时添加自定义消息。因为当传递无效正文时,响应只是 {"error":"ActionController::BadRequest"} 而不是我提供的哈希值。

在控制台中我得到了相同的行为。 raise ActiveRecord::RecordNotFound, "foo" 确实加注了 ActiveRecord::RecordNotFound: foo

但是 raise ActionController::BadRequest, "baa" 结果是

ActionController::BadRequest: ActionController::BadRequest

如何将自定义消息添加到 BadRequest 例外?

试试这个:

raise ActionController::BadRequest.new(), "The Json body needs to be wrapped inside a \"Patch\" key"