Ruby on rails 如何优雅地处理ActionController::ParameterMissing

Ruby on rails 如何优雅地处理ActionController::ParameterMissing,ruby-on-rails,Ruby On Rails,我想知道如何优雅地处理错误ActionController::ParameterMissing,因此它不会返回难看的HTML,而是返回一条消息和与500内部服务器错误不同的内容 如何知道我有这个控制器: class MetricsController < ApplicationController before_action :set_metric, only: [:update] def update if @metric.update(metric_params)

我想知道如何优雅地处理错误
ActionController::ParameterMissing
,因此它不会返回难看的HTML,而是返回一条消息和与
500内部服务器错误不同的内容

如何知道我有这个控制器:

class MetricsController < ApplicationController
  before_action :set_metric, only: [:update]

  def update
    if @metric.update(metric_params)
      render json: @metric
    else
      render json: @metric.errors, status: :unprocessable_entity
    end
  end

  private

  def set_metric
    @metric = Metric.find_by(site: params[:site_id], post_id: params[:post_id])
  end

  def metric_params
    params.require(:metric).permit(:param1, :param2)
  end
end
class MetricsController
如果我发送一个请求,而不是一个包含至少一个属性的度量键的json,rails将自动用HTML回复该请求。我想覆盖它。

这可能会有帮助

这可能会有帮助

Rails提供了一种拯救控制器中异常的干净方法,将特定的错误类映射到相应的处理程序

因此,事实上,你可以使用特拉维斯提到的
rescue
rescue\u

rescue\u from ActionController::ParameterMissing,:with=>:render\u 404

Rails提供了一种拯救控制器中异常的干净方法,将特定的错误类映射到相应的处理程序

因此,事实上,你可以使用特拉维斯提到的
rescue
rescue\u

rescue\u from ActionController::ParameterMissing,:with=>:render\u 404

潜在重复:潜在重复:
rescue_from ActionController::ParameterMissing do |e|
  render 'something'
end