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

时间:2016-08-30 13:59:56

标签: ruby-on-rails ruby ruby-on-rails-4 actioncontroller

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

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例外添加自定义消息?

1 个答案:

答案 0 :(得分:9)

试试这个:

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