【发布时间】:2019-09-19 02:39:54
【问题描述】:
我正在尝试根据用户会话成功或登录失败生成不同外观的 Flash 消息。 (主要是通过改变jped图像)
我有一个部分视图处理闪存消息并检查密钥,然后显示不同的图像:
_flash_message.html.erb
<% if flash.present? %>
<% case flash.first[0] %>
<% when "devise_deconnexion" %>
<div id="flash-message">
<div id="image">
<%= image_tag "deconnecte.svg" %>
</div>
<div id="affiche">
<div id="message">
<h1>Succès</h1>
<h2><%= flash.first[1] %></h2>
</div>
<div id="check" style="background-color: #00e691;">
<%= image_tag "check_blanc.svg" %>
</div>
</div>
</div>
...
在上面的位中,我检查 key 是否匹配“devise_deconnexion”字符串,以便在 flash 消息中显示不同的图像。
我已经能够通过为每个设计模型生成设计会话控制器并按以下方式进行更改来调整这一点:
sessions_controller.rb
def destroy
# super
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
set_flash_message! :devise_deconnexion, :signed_out if signed_out
yield if block_given?
respond_to_on_destroy
end
效果很好。
虽然我很难在用户输入错误密码的情况下更改图像。我不知道在哪里修改闪存键。
这是从 github 获取的设计会话#create 代码:
# POST /resource/sign_in
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message!(:notice, :signed_in)
sign_in(resource_name, resource)
yield resource if block_given?
respond_with resource, location: after_sign_in_path_for(resource)
end
我只看到与:signed_in 消息一起使用的:notice 键。
我看不到“错误密码或用户名”的闪烁消息是在哪里触发的(尽管输入错误密码时我确实收到了一条闪烁消息)
【问题讨论】:
标签: ruby-on-rails devise