相关疑难解决方法(0)

猴子修补Devise(或任何Rails gem)

我在我的Rails项目中使用Devise身份验证gem,我想更改它在闪存警报中使用的密钥.(设计使用:通知和:警告闪存键,但我想将它们更改为:成功和:错误,以便我可以使用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
Run Code Online (Sandbox Code Playgroud)

但我只是不知道该把它放在哪里.


更新:

基于答案,我使用以下代码创建了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
Run Code Online (Sandbox Code Playgroud)

但这会导致每个Devise操作出错: …

ruby rubygems monkeypatching ruby-on-rails devise

21
推荐指数
2
解决办法
2万
查看次数

标签 统计

devise ×1

monkeypatching ×1

ruby ×1

ruby-on-rails ×1

rubygems ×1