从ActionController :: UnpermittedParameters营救

时间:2018-11-21 12:58:51

标签: ruby-on-rails exception try-catch

我正在尝试处理ActionController::UnpermittedParameters

我已经在ApplicationController中定义了一个块

  rescue_from ActionController::UnpermittedParameters do |error|
    message = "Invalid parameter: %s. " % error.params.to_sentence
    message << 'Please verify that the parameter name is valid and the values are the correct type.'
    format.html { redirect_to :back, alert: 'You passed wrong params! ' + message }
  end

但是,当我执行应处理的代码时,不会执行急救块。

enter image description here

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

我想您的请求不是HTML格式的,因此不会执行format.html { }块。

尝试仅保留redirect_to :back, alert: 'You passed wrong params! ' + message部分

答案 1 :(得分:0)

我不知道我的问题出了什么问题,但是我编写了自己的ErrorHandler模​​块,现在可以正常使用了。

# Error module to Handle errors globally
# include Error::ErrorHandler in application_controller.rb
module Error
  module ErrorHandler
    def self.included(klass)
      klass.class_eval do
        rescue_from ActionController::UnpermittedParameters, with: :unpermitted_parameter
      end
    end

    private
    def unpermitted_parameter(error)
      message = "You have entered an unpermitted parameter: %s. " % error.params.to_sentence
      message << 'Please verify that the parameter name is valid and the values are the correct type.'
      Rails.logger.info(Rainbow(" !!! UNPERMITTED: !!! #{error.to_s}").fg(:red))

      respond_to do |format|
        format.html { redirect_back fallback_location: { action: "index" }, 
                      :alert => message }
        format.js
      end
    end
  end
end