首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册后欢迎留言?

注册后欢迎留言?
EN

Stack Overflow用户
提问于 2012-02-17 17:03:50
回答 2查看 1.8K关注 0票数 1

当用户注册我的应用程序时,我有一条欢迎消息出现在主页上,使用的是Devise的sign_in_count列。

代码语言:javascript
复制
def home
 if current_user.sign_in_count == 1 
  flash.now[:notice] = "Welcome!"
 end
end

不过,唯一的问题是,它会一直呆在那里,直到他们签了名,然后再登录。如何使它只显示一次,并在页面刷新或更改时消失?有什么铁轨可以做到吗?

谢谢。

编辑

application.html.erb

代码语言:javascript
复制
<body>
 <div class="container">
   <%= render "shared/flash_message" %>
    <%= yield %>
 </div>
</body>

_flash_message.html.erb

代码语言:javascript
复制
<% [: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 %>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-17 17:12:56

在您的layouts/application.html.erb中应该有这样的内容:

代码语言:javascript
复制
<% flash.each do |key,  value| %>
<%= content_tag(:div, value, class: "flash #{key}") %>
<% end %>

这样做,应该会像你期望的那样工作。

编辑

如果您已经为current_user设置了验证怎么办?

代码语言:javascript
复制
def home
 if current_user && current_user.sign_in_count == 1 
  flash.now[:notice] = "Welcome!"
 end
end

编辑2

好的!明白了!在下一次登录之前,来自DeviseDevise列将保持不变,因此,它将始终向您显示Welcome!消息。要使它像您所期望的那样工作,您必须在它上创建一个标志。

代码语言:javascript
复制
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

您可以尝试使用sessioncookies

票数 5
EN

Stack Overflow用户

发布于 2012-02-17 17:25:58

如果用户首次登录,则更改逻辑以比较against 0。在将闪存消息更新为sign_in_count后,

代码语言:javascript
复制
def home
 if current_user.sign_in_count == 0 
  flash.now[:notice] = "Welcome!"
  current_user.update_attribute(:sign_in_count, 1)
 end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9332468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档