Je me demande quelle est la meilleure pratique pour afficher des messages flash. Les deux principaux moyens que j'ai vus utilisent quelque chose comme ce code généré par un échafaudage
<p id="notice"><%= notice %></p>
ou en plaçant un code comme celui-ci dans l'en-tête de votre application.
<% if !flash.empty? %>
<div id="flash">
<% flash.keys.each do |k| %>
<div class="<%= k %>">
<%= flash[k] %>
</div>
<% end %>
</div>
<% end %>
Il me semble que la première méthode offre plus de flexibilité, tandis que la dernière améliore la lisibilité du code et élimine la redondance. Existe-t-il une méthode que la plupart des développeurs Rails préfèrent? En parallèle, comment un échafaudage met-il en œuvre un avis? Est-ce juste une aide qui accède au hash flash? Pourquoi passer par le problème d'utiliser l'aide lorsque vous pouvez utiliser directement le hash flash? Merci
Je le fais de cette façon:
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "flash #{key}" %>
<% end %>
Appeler un partiel garde votre application.html.erb
encore plus propre ..
<%= render 'shared/flash_messages' if !flash.empty? %>
.. et dans le partiel faire quelque chose comme ce que @zolter a mentionné:
<div id="flash_messages">
<% flash.each do |key, value| %>
<%= content_tag(:div, value, :class => "flash #{key}") %>
<% end %>
</div>
Pourquoi ne pas mettre la deuxième méthode sur une fonction d'assistance afin qu'elle n'affecte pas la lisibilité du code sur les mises en page?
<% if flash[:notice] %>
<div class="notification is-primary global-notification">
<p class="notice"><%= notice %></p>
</div>
<% end %>
<% if flash[:alert] %>
<div class="notification is-danger global-notification">
<p class="alert"><%= alert %></p>
</div>
<% end %>