Hi all,

Just a heads-up to let you know that I've created a test app and pushed it 
to GitHub. I have successfully reproduced this bug with the test app. Steps 
to reproduce are in README.md in the repo.

   - Code here: https://github.com/joshukraine/safari-flash-bug
   - Live on Heroku here: http://protected-ocean-3174.herokuapp.com/

Thanks again for your assistance!

Joshua

On Wednesday, December 11, 2013 12:37:34 PM UTC+2, joshukraine wrote:
>
> I have a Rails 3.2 app that manages students. It has a fairly typical nav 
> bar across the top (Foundation 5) which contains a quick search field. The 
> nav bar is displayed on every page of the site.
>
> If you enter a valid (numeric) student ID into the search field, you 
> simply jump to that student's page. If you enter text or other non-numeric 
> input, you get a flash error asking for valid input. If you enter an id 
> that's not found, you get a flash notice saying it wasn't found. In either 
> of the latter two cases, the controller should just drop you back to 
> whatever page you came from and display the appropriate flash message.
>
> For starters, here's the search field in the view:
>
> <%= form_tag search_students_path, method: 'get' do %><div id="nav-search" 
> class="row collapse">
>   <div id="nav-search-field" class="small-21 columns">
>     <%= text_field_tag :search, nil, autocomplete: 'off' %>
>   </div>
>   <div id="nav-search-icon" class="small-3 columns">
>     <%= submit_tag '&#xf002;'.html_safe, class: 'button fa fa-search spin', 
> name: 'submit' %>
>   </div></div><% end %>
>
> And here's the controller action:
>
> def search
>   session[:return_to] ||= request.referer
>   if params[:search].to_i.zero?
>     flash[:error] = %Q[<i class="fa fa-times fa-fw"></i> Please enter a 
> numeric student ID.].html_safe
>     redirect_to session.delete(:return_to)
>   else
>     id = params[:search].to_i.abs
>     @student = Student.search(id).first
>     if @student
>       redirect_to @student
>     else
>       flash[:caution] = %Q[<i class="fa fa-warning fa-fw"></i> Sorry, we 
> couldn't find a student with ID #{id}.].html_safe
>       redirect_to session.delete(:return_to)
>     end
>   end
> end
>
> Lastly, here's the code for rendering flash messages in 
> application.html.erb:
>
> <% flash.each do |key, value| %>
>   <div data-alert class="alert-box cbc-<%= key %>">
>     <%= value %>
>     <a href="#" class="close">&times;</a>
>   </div><% end %>
>
> In Chrome and FireFox this works exactly as expected. The flash appears 
> for one request, then disappears. However, in Safari, once the flash comes 
> up it never goes away for that page. So if you get the error flash on the 
> home page, for example, you can refresh all you want. It stays put. You can 
> go to another page, and then come back, and it's still there. The same is 
> true for other pages. Once the flash message has appeared on a given page, 
> it doesn't go away.
>
> *Thus my question: how can I get Safari to clear the flash after the first 
> request?*
>
> I'm aware of the whole "flash vs. flash.now" issue when rendering pages. 
> But even then, the flash will disappear if you simply refresh. I actually 
> tried flash.now in this case, but then the flash isn't displayed at all in 
> any browser.
>
> Since this appears to be a browser-specific problem, here are some further 
> stats on my system:
>
>    - Mac OS X 10.9
>    - Safari 7.0
>    - Rails 3.2.16
>
> One final observation. After playing around with this issue in Safari, I 
> noticed that if I clicked my bookmark for http://localhost:3000/, that 
> would clear the flash. Of course, all the navigation links in my site 
> layout contain relative paths, whereas the bookmark is calling a full url.
>
> Anyway, hope that made sense. Thanks in advance for your help!
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/2db28c13-60cd-41b2-97c1-5bc15f883751%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to