Rails には次のようなコントローラー アクションがあります。
def register
if logged_in?
current_user().courses << Course.find(params[:course_id])
flash.notice = 'Successfully registered!'
redirect_to '/'
else
flash.alert = "You must be logged in"
redirect_to '/courses'
end
end
これは /courses ビューで次のように表示されます。
<% if flash[:notice] %>
<div class="notice"><%= flash[:notice] %></div>
<% end %>
ただし、別のルートに移動して /courses に戻ると、通知が一瞬点滅してから消えます。これは正常な動作ですか?もしそうなら、なぜそれが起こっているのでしょうか?そうでない場合、私の何が間違っているのでしょうか?
フラッシュを再度表示したくない場合は、代わりに flash.now を使用します。
flash.now[:notice] = 'Successfully registered!'
コントローラー メソッドでセッション検出を直接実行しているため、アクション フィルターを使用することを強くお勧めします。
before_action :logged_in, only: [:register]
# ...
def register
# ...
end
ここで、logged_in は、ユーザーが登録され、ログインしていることを確認するメソッドである必要があります。詳細については、フィルターを確認してください。