ruby-on-rails – 猴子补丁Devise(或任何Rails宝石)
发布时间:2020-12-16 20:08:45 所属栏目:百科 来源:网络整理
导读:我在Rails项目中使用了 Devise认证宝石,而且我想更改闪存警报中使用的密钥. (Devise使用:通知和:提醒闪光键,但我想将它们更改为:成功和:错误,以便我可以显示漂亮的绿色/红色框与 Bootstrap.) 所以我想要能够以某种方式覆盖DeviseController中的set_flash
我在Rails项目中使用了
Devise认证宝石,而且我想更改闪存警报中使用的密钥. (Devise使用:通知和:提醒闪光键,但我想将它们更改为:成功和:错误,以便我可以显示漂亮的绿色/红色框与
Bootstrap.)
所以我想要能够以某种方式覆盖DeviseController中的set_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 但我只是不知道该放在哪里. 更新: 基于答案我创建了一个配置/ initializers / overrides.rb文件与以下代码: class DeviseController def set_flash_message(key,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操作都会导致错误:
解决方法
如果您尝试重新打开类,它与声明新类的语法相同:
class DeviseController end 如果这个代码在真正的类声明之前执行,它将继承自Object而不是扩展Devise声明的类.相反,我尝试使用以下 DeviseController.class_eval do # Your new methods here end 这样,如果DeviseController尚未声明,您将收到错误.因此,您可能会最终结束 require 'devise/app/controllers/devise_controller' DeviseController.class_eval do # Your new methods here end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |