在Rails中显示两次的Flash消息

时间:2012-04-23 01:49:49

标签: ruby-on-rails-3

当用户访问感谢他们访问该页面的页面时,我尝试显示闪光灯,这样可以让他们选择与朋友分享网址。但是,Flash消息显示在页面上(正确),但随后转到他们访问的下一页。如何才能在第一页上显示此内容?

现在,我希望消息显示的方法/视图是:

def show    
  user_message
end

user_message是我的应用控制器中的一种方法:

def user_message
  if current_user    
    flash[:page_visited] = "Thank you for visiting!"
  end
end  

我使用部分(我的应用布局中包含的内容)作为我的Flash通知:

<% flash.each do |name, msg| %>
  <% if name == :notice %>  
    <div class="alert-message block-message success" data-alert="alert">
        <a class="close" data-dismiss="alert">×</a>
        <%= msg %>&nbsp;<br />  
    </div>
  <% elsif name == :page_visited %> 
    <div class="alert-message block_message warning" data-alert="alert">
        <a class="close" data-dismiss="alert">×</a>
        <strong><%= msg %><br><br></strong>
        Let your friends and family know!<br /><br />
        <!-- ShareThis Button BEGIN -->
        <span class='st_facebook_large'></span>
        <span class='st_twitter_large'></span>
        <span class='st_plusone_large'></span>      
        <span class='st_sharethis_large'></span>
        <!-- ShareThis Button END -->
    </div>  
  <% else %> 
    <div class="alert alert-message error" data-alert="alert">
        <a class="close" data-dismiss="alert">×</a>
        <%= msg %>
    </div>
  <% end %> 
<% end %>

所以会发生的事情是它会在:show视图中正确显示,但在下一页上,用户点击该消息再次显示并使用flash&#34; error&#34;格式并没有显示ShareThis链接(虽然网址不是我希望他们分享的那个)。

我该如何纠正?我尝试将user_message移动到before_filter,即

before_filter :user_message, :only => :show

但是做了同样的事情 - 显示了flash消息:show和后续页面(作为错误消息)。

1 个答案:

答案 0 :(得分:1)

立即尝试闪存

def user_message
  if current_user    
    flash.now[:page_visited] = "Thank you for visiting!"
  end
end