【问题标题】:Changing devise flash messages from notice to error将设计闪存消息从通知更改为错误
【发布时间】:2013-03-09 00:17:36
【问题描述】:

我知道您可以覆盖默认的设计控制器,我为注册和会话控制器这样做了。我知道您还可以在语言环境下更改设计中 Flash 消息的文本。但是,当用户名和密码的组合无效时,我不确定如何更改为会话控制器显示的 Flash 消息的类型。

create方法看起来像

def create
  self.resource = warden.authenticate!(auth_options)
  set_flash_message(:notice, :signed_in) if is_navigational_format?
  sign_in(resource_name, resource)
  respond_with resource, :location => after_sign_in_path_for(resource)
end

我怀疑验证是在后续调用期间完成的

warden.authenticate!(auth_options) 

但这是我不确定如何在我的应用程序中覆盖它的地方。

此外,我认为对于更改 Flash 通知颜色这样一个简单的用例来说,这是一个复杂的覆盖。

任何见解都将不胜感激。

谢谢! 尼克

【问题讨论】:

    标签: devise ruby-on-rails-3.2


    【解决方案1】:

    您可以使用自定义故障应用程序来做到这一点。如您所见,此 Flash 消息设置正确 here 因此您可以在自定义故障应用程序中更改它。

    所以一开始你从 Devise 的那个继承你的失败应用:

    class CustomFailure < Devise::FailureApp
      def recall
        env["PATH_INFO"]  = attempted_path
        flash.now[:error] = i18n_message(:invalid)
        self.response = recall_app(warden_options[:recall]).call(env)
      end
    end
    

    将此文件放在您的应用中的某个位置,然后说“设计以像这样使用它 (config/initializers/devise.rb):

    config.warden do |manager|
      manager.failure_app = CustomFailure
    end
    

    【讨论】:

    • 感谢纳什的帮助!效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2016-11-14
    相关资源
    最近更新 更多