我正在尝试处理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
但是,当我执行应处理的代码时,不会执行急救块。
我在做什么错了?
答案 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