1

當用戶註冊我的應用程序時,我在主頁上使用Devise的sign_in_count列顯示一條歡迎消息。註冊後歡迎使用Flash動畫?

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 %> 
+0

顯示你的'佈局/ application.html.erb'文件的相關代碼。 – 2012-02-17 17:10:52

回答

5

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

EDIT 2

OK!得到它了!從Devisesign_in_count列將保持不變,直到下一次登錄,因此,它將始終向您顯示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 

您可以嘗試使用sessioncookies

+0

你是否告訴我設置一個flash訊息?我已經創建了它,但由於我使用的是Twitter-boostrap,因此它的外觀不同,但它具有相同的功能。我編輯了我的問題讓你看。 – LearningRoR 2012-02-17 18:14:16

+0

@Railslearner剛編輯答案。看一看。 – 2012-02-17 19:50:42

+0

它仍然做同樣的事情。 – LearningRoR 2012-02-17 20:53:10

1

如果用戶第一次登錄,請更改邏輯以比較against 0。設置flash消息後更新sign_in_count 1,

def home 
if current_user.sign_in_count == 0 
    flash.now[:notice] = "Welcome!" 
    current_user.update_attribute(:sign_in_count, 1) 
end 
end 
+0

問題在於它將':sign_in_count'永遠保持爲1。在我的情況下,我不得不做'(:sign_in_count,2)',因爲當你註冊用戶已經在1。 – LearningRoR 2012-02-17 18:05:56

相關問題