I have a view from which I make an ajax request to the contro开发者_StackOverflow社区ller and after the action is successfully completed I initialize the flash.now[:notice]. But after the control goes back to the view. I don't happen to see the flash message.
flash.now[:notice] = "Request Completed successfully" if @meetings.any?
When redirecting use
flash[:notice] = "This message value is available in next request-response cycle"
When rendering use
flash.now[:notice] = "Message is available in same request-response cycle"
Info from here
Do you flash.now BEFORE you call render? Otherwise your message won´t appear.
code in the controller:
flash[:success] = "All good!"
format.html { redirect_to some_path}
and in the view with close button:
<% flash.each do |key, value| %>
<%= content_tag(:div, class: "alert alert-#{key} alert-dismissable") do %>
<%= value %>
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<% end %>
<% end %>
If you use form_with
you need to use local: true
<%= form_with @user, local: true do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.submit %>
<% end %>
Check you've got something like
<% flash.each do |key, value| %>
<div class="flash <%= key %>"><%= value %></div>
<% end %>
in your application.html.erb file: if you don't you must add it, as this is where the notice will be displayed.
精彩评论