我想知道显示Flash消息的最佳做法是什么。我见过的两种主要方式是使用类似这种脚手架生成的代码
<p id="notice"><%= notice %></p>
或在您的应用程序标题中放置这样的代码。
<% if !flash.empty? %>
<div id="flash">
<% flash.keys.each do |k| %>
<div class="<%= k %>">
<%= flash[k] %>
</div>
<% end %>
</div>
<% end %>
在我看来,第一种方法增加了灵活性,而后者提高了代码可读性并消除了冗余。大多数rails开发人员更喜欢哪种方法?作为一个侧面问题,脚手架如何实施通知?它只是一个访问Flash哈希的助手吗?当你可以直接使用flash哈希时,为什么要经历使用帮助器的麻烦?感谢
答案 0 :(得分:63)
我这样做:
<% flash.each do |key, value| %>
<%= content_tag :div, value, class: "flash #{key}" %>
<% end %>
答案 1 :(得分:34)
调用部分会让您的application.html.erb
更加清洁..
<%= render 'shared/flash_messages' if !flash.empty? %>
..并在部分做@ zolter提到的事情:
<div id="flash_messages">
<% flash.each do |key, value| %>
<%= content_tag(:div, value, :class => "flash #{key}") %>
<% end %>
</div>
答案 2 :(得分:2)
为什么不将第二个方法放在辅助函数上,这样就不会影响布局的代码可读性?
答案 3 :(得分:1)
<% 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 %>