显示Flash消息的最佳实践方法

Ste*_*eve 30 ruby-on-rails ruby-on-rails-3

我想知道显示flash消息的最佳做法是什么.我见过的两种主要方式是使用类似这种脚手架生成的代码

<p id="notice"><%= notice %></p>
Run Code Online (Sandbox Code Playgroud)

或者在您的应用程序标题中放置这样的代码.

<% if !flash.empty? %>
    <div id="flash"> 
        <% flash.keys.each do |k| %> 
            <div class="<%= k %>">
                <%= flash[k] %>
            </div>  
        <% end %>   
    </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在我看来,第一种方法增加了更多的灵活性,而后者提高了代码的可读性并消除了冗余.大多数rails开发人员更喜欢哪种方法?作为一个侧面问题,脚手架如何实施通知?它只是一个访问Flash哈希的助手吗?当你可以直接使用flash哈希时,为什么要经历使用帮助器的麻烦?谢谢

zol*_*ter 64

我是这样做的:

<% flash.each do |key, value| %>
  <%= content_tag :div, value, class: "flash #{key}" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


use*_*833 35

呼唤部分让你application.html.erb更清洁..

<%= render 'shared/flash_messages' if !flash.empty? %>
Run Code Online (Sandbox Code Playgroud)

..并在部分做像@zolter提到的那样:

<div id="flash_messages">
  <% flash.each do |key, value| %>
    <%= content_tag(:div, value, :class => "flash #{key}") %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

  • [使用partials的一种方法是将它们视为子例程的等价物:作为一种将细节移出视图的方法,以便您可以更容易地掌握正在发生的事情.](http://guides.rubyonrails.org/layouts_and_rendering html的#使用-泛音到简化的视图) (4认同)
  • 但是你可以把所有东西都放在一个部分.正如我一直所理解的那样,你主要只想在整个应用程序中重复抛出一些东西.如果有大量的代码,那么也可以将它们放入部分代码中,但是这样做有资格吗?我不知道,我没有足够的经验来打电话,但我不认为有必要为它做一个新的部分.谢谢 (2认同)