Sim*_*Sim 23 authentication devise ruby-on-rails-3
Devise身份验证框架在任何地方都使用闪存通知.这使得与应用程序集成变得容易,但有时会导致糟糕的用户体验.
我想知道在我的Rails 3应用程序中选择性地关闭一些Devise flash通知的简单方法.特别是,我想摆脱明显明显的signed_in和signed_out闪烁.
一些搜索建议继承会话控制器或使用类似的东西,但我无法找到任何简单的解决方案来解决这个问题.
Vol*_*ldy 32
您可以使用I18n后端自定义您的设计Flash消息,并设计支持.如果您没有为特定键设置任何内容,则不会显示空的Flash消息,例如sign_in和sign_out:
en:
devise:
failure:
unauthenticated: 'You need to sign in or sign up before continuing.'
unconfirmed: 'You have to confirm your account before continuing.'
locked: 'Your account is locked.'
invalid: 'Invalid email or password.'
invalid_token: 'Invalid authentication token.'
timeout: 'Your session expired, please sign in again to continue.'
inactive: 'Your account was not activated yet.'
sessions:
signed_in: ""
signed_out: ""
Run Code Online (Sandbox Code Playgroud)
UPD.
您不应该删除密钥,否则您将收到错误.要不显示空的Flash消息,您应该在视图中进行简单的检查(例如,使用haml):
- unless notice.blank? && alert.blank?
#flash
.wrapper
- unless notice.blank?
%p.notice= notice
- unless alert.blank?
%p.alert= alert
Run Code Online (Sandbox Code Playgroud)
小智 8
隐藏空Flash消息的更好方法:如果您的消息位于带有"通知"或"错误"类的div中,CSS3会让您拥有如下样式:
.notice:empty {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
这很好,因为你可以随时显示flash div,它只会出现在那里.我使用它来更新来自ajax调用的响应中的flash消息,否则不会更新flash消息,因为没有涉及页面重新加载.它给出了由于ajax调用而产生的消息的一致外观.