当用户注册我的应用程序时,我有一条欢迎消息出现在主页上,使用的是Devise的sign_in_count列。
def home
if current_user.sign_in_count == 1
flash.now[:notice] = "Welcome!"
end
end不过,唯一的问题是,它会一直呆在那里,直到他们签了名,然后再登录。如何使它只显示一次,并在页面刷新或更改时消失?有什么铁轨可以做到吗?
谢谢。
编辑
application.html.erb
<body>
<div class="container">
<%= render "shared/flash_message" %>
<%= yield %>
</div>
</body>_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 %>发布于 2012-02-17 17:12:56
在您的layouts/application.html.erb中应该有这样的内容:
<% flash.each do |key, value| %>
<%= content_tag(:div, value, class: "flash #{key}") %>
<% end %>这样做,应该会像你期望的那样工作。
编辑
如果您已经为current_user设置了验证怎么办?
def home
if current_user && current_user.sign_in_count == 1
flash.now[:notice] = "Welcome!"
end
end编辑2
好的!明白了!在下一次登录之前,来自Devise的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您可以尝试使用session或cookies。
发布于 2012-02-17 17:25:58
如果用户首次登录,则更改逻辑以比较against 0。在将闪存消息更新为sign_in_count后,
def home
if current_user.sign_in_count == 0
flash.now[:notice] = "Welcome!"
current_user.update_attribute(:sign_in_count, 1)
end
endhttps://stackoverflow.com/questions/9332468
复制相似问题