避免 application.html.erb 在 rails 应用着陆页上显示 Flash 通知

avoiding application.html.erb for flash notices on rails app landing page

我为我的 rails 4 应用程序设计了两个 flash 通知。 First 应该出现在所有页面上(当事件发生时),所以我将它写在我的 application.html.erb 文件中。第二个应该只出现在带有自定义 CSS 的着陆页上。

现在,两者都显示在着陆页上。我怎样才能避免第一个(写在application.html.erb)只用于我的着陆页?

如果您想避免为特定 controlleraction 呈现 Flash 通知,那么您可以这样做 -

<% unless params[:action] == 'something' %>
  <% flash.each do |key, value| %>
    <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
<% end %>

您可以在 application.html.erb 中检查控制器和操作以显示类似以下的闪现消息: 考虑根路径:root "home#index" 其中 home 是控制器,index 是动作。

<% unless controller_name == 'home' && action_name == 'index' %>
  <% flash.each do |key, value| %>
    <div class="alert alert-<%= key %>"><%= value %></div>
  <% end %>
<% end %>

它对你有用,而且我希望你尝试一下 gem 'metamagic' 以备将来考虑。