本文介绍了猴子补丁魔法(或任何Rails宝石)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 限时删除!! 我在我的Rails项目中使用 Devise 认证宝石,而我想更改密钥它在闪光警报中使用。 (Devise使用:通知和:提醒flash键,但是我想将它们更改为:success和:错误,以便我可以使用 Bootstrap 。) 所以我想以某种方式覆盖 set_flash_message 方法在 DeviseController 。 这是新的方法: def set_flash_message(key ,kind,options = {}) 如果key =='alert' key ='error' elsif key =='notice' key ='成功' end message = find_message(kind,options) flash [key] = message if message.present? end 但我只是不知道在哪里放。 更新: 根据答案,我创建了一个配置/ initializers / overrides.rb文件,其代码如下: class DeviseController def set_flash_message(key,kind,options = {})如果key =='alert' key ='error' elsif key =='notice' key ='成功' end message = find_message(kind,options) flash [key] = message if message.present? end end 但是这会导致每个Devise操作发生错误: / p> 解决方案 If you try to reopen a class, it's the same syntax as declaring a new class:class DeviseControllerendIf this code is executed before the real class declaration, it inherits from Object instead of extending the class declared by Devise. Instead I try to use the followingDeviseController.class_eval do # Your new methods hereendThis way, you'll get an error if DeviseController has not been declared. As a result, you'll probably end up withrequire 'devise/app/controllers/devise_controller'DeviseController.class_eval do # Your new methods hereend 这篇关于猴子补丁魔法(或任何Rails宝石)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 1403页,肝出来的.. 09-06 21:19