将设计flash消息从通知更改为错误

nic*_*meo 2 devise ruby-on-rails-3.2

我知道你可以覆盖默认的设计控制器,我这样做是为了注册和会话控制器.我知道您也可以在区域设置下更改设计中的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
Run Code Online (Sandbox Code Playgroud)

我怀疑验证是在跟随调用期间完成的

warden.authenticate!(auth_options) 
Run Code Online (Sandbox Code Playgroud)

但这是我不知道如何在我的应用程序中覆盖它的地方.

此外,我认为这是一个复杂的覆盖,用于更改闪光通知颜色的简单用例.

任何见解都将非常感激.

谢谢!缺口

Vas*_*ich 7

您可以使用自定义失败应用程序来完成.如您所见,此Flash消息正在此处设置所以您可以在自定义故障应用程序中更改它.

所以首先你从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
Run Code Online (Sandbox Code Playgroud)

将此文件放在应用程序的某个位置,然后说Devise像这样使用它(config/initializers/devise.rb):

config.warden do |manager|
  manager.failure_app = CustomFailure
end
Run Code Online (Sandbox Code Playgroud)