1

ユーザーがページにアクセスしたときにフラッシュを表示して、友人と URL を共有するオプションを提供するページにアクセスしてくれたことに感謝します。ただし、フラッシュ メッセージはページに表示されますが (正しい)、次にアクセスするページに引き継がれます。これを最初のページにのみ表示するにはどうすればよいですか?

現在、メッセージを表示したいメソッド/ビューは次のとおりです。

def show    
  user_message
end

user_message は、私のアプリ コントローラーのメソッドです。

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

フラッシュ通知に (アプリのレイアウトに含まれている) パーシャルを使用します。

<% 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 ビューでは正しく表示されますが、次のページでユーザーがクリックしてメッセージを再度表示し、フラッシュの「エラー」形式を使用し、ShareThis リンクを表示しません (ただし、URL は表示されません)。とにかく共有してもらいたいものです)。

どうすればこれを修正できますか? user_message を before_filter に移動してみました

before_filter :user_message, :only => :show

しかし、それは同じことをしました - :show とその後のページにフラッシュメッセージを表示しました (エラーメッセージとして)。

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 に答える