Lea*_*RoR 1 ruby ruby-on-rails devise ruby-on-rails-3 ruby-on-rails-3.1
当用户注册我的应用程序时,我在主页上使用Devise的sign_in_count列显示欢迎消息.
def home
if current_user.sign_in_count == 1
flash.now[:notice] = "Welcome!"
end
end
Run Code Online (Sandbox Code Playgroud)
但唯一的问题是它会一直存在,直到它们退出并重新登录.如何只显示一次并在页面刷新或更改时消失?有没有一些铁路方式来做到这一点?
谢谢.
编辑
application.html.erb
<body>
<div class="container">
<%= render "shared/flash_message" %>
<%= yield %>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
_flash_message.html.erb
<% [:notice, :error, :alert].each do |level| %>
<% unless flash[level].blank? %>
<div class="span12">
<div class="<%= flash_class(level) %> fade in">
<a href="#" data-dismiss="alert" class="close">×</a>
<%= content_tag :p, flash[level] %>
</div>
</div>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在你的layouts/application.html.erb,你应该有这样的事情:
<% flash.each do |key, value| %>
<%= content_tag(:div, value, class: "flash #{key}") %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这样做,应该按预期工作.
编辑
如果您确认current_user已经设置了该怎么办?
def home
if current_user && current_user.sign_in_count == 1
flash.now[:notice] = "Welcome!"
end
end
Run Code Online (Sandbox Code Playgroud)
编辑2
好!得到它了!在sign_in_count从柱Devise将保持不变,直到下一次登录,所以,它会始终保持显示您的Welcome!消息.要使其按预期工作,您必须在其上创建一个标志.
def home
if current_user && current_user.sign_in_count == 1
unless session[:display_welcome]
flash.now[:notice] = "Welcome!"
session[:display_welcome] = true
end
end
end
Run Code Online (Sandbox Code Playgroud)
你可以尝试使用session或cookies.
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |