注册后欢迎使用flash消息?

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)

Kle*_* S. 5

在你的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)

你可以尝试使用sessioncookies.