我在我的 Rails 项目中使用Devise身份验证 gem,我想更改它在 Flash 警报中使用的密钥。(设计使用 :notice 和 :alert flash 键,但我想将它们更改为 :success 和 :error 以便我可以使用Bootstrap显示漂亮的绿色/红色框。)
所以我希望能够以某种方式覆盖DeviseControllerset_flash_message
中的方法。
这是新方法:
def set_flash_message(key, kind, options = {})
if key == 'alert'
key = 'error'
elsif key == 'notice'
key = 'success'
end
message = find_message(kind, options)
flash[key] = message if message.present?
end
但我就是不知道该放在哪里。
更新:
根据答案,我使用以下代码创建了一个 config/initializers/overrides.rb 文件:
class DeviseController
def set_flash_message(key, kind, options = {})
if key == 'alert'
key = 'error'
elsif key == 'notice'
key = 'success'
end
message = find_message(kind, options)
flash[key] = message if message.present?
end
end
但这会导致每个设计操作出错:
路由错误:Devise::SessionsController:Class 的未定义方法“prepend_before_filter”