1

当用户访问一个页面时,我试图显示一个 Flash,感谢他们访问该页面,这使他们可以选择与他们的朋友分享 URL。但是,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“错误”格式并且不显示 ShareThis 链接(尽管 url 不会无论如何我都希望他们分享)。

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

before_filter :user_message, :only => :show

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

4

1 回答 1

1

立即尝试闪光

def user_message
  if current_user    
    flash.now[:page_visited] = "Thank you for visiting!"
  end
end  
于 2012-04-23T03:18:16.180 回答