如何防止闪存中的参数哈希与视图模板中的ERB输出一起显示

时间:2012-08-03 23:42:17

标签: ruby-on-rails ruby-on-rails-3 model-view-controller

我已经实现了一个应用程序助手,可以动态地向视图提供flash消息的类,以便使用Bootstrap进行样式设置。设置工作但与ERB一起,实际参数哈希正输出到视图。我在帮助器和视图中查看了所有应用程序代码,但无法查明源代码。我还查看了输出HTML,但它并不表示源问题。以下是帮助程序和视图以及故障输出结果的快照。

问题视图输出

http://screencast.com/t/9KZHxjqm1Pq

-

# layouts/application.html.erb
...
</head>
<body>

  <%= render "layouts/header" %>

  <div class="container">


  <% if flash.any? %>
  <%= render 'shared/flash_messages' %>
  <% end %>

  <%= yield %>
  ...

-

# views/shared/_flash_messages.html.erb
<div>
<%= flash.each do |key, value| %>
  <div class="<%= flash_class(key) %> fade in">
    <a href="#" data-dismiss="alert" class="close">x</a>
    <%= "#{value}" %>
  <% end %>
  </div>
</div>

-

# helpers/application_helper.rb
module ApplicationHelper

  def  flash_class(level)
  case level
    when :notice then "alert alert-info"
    when :success then "alert alert-success"
    when :error then "alert alert-error"
    when :alert then "alert alert-error"
  end
end

end

1 个答案:

答案 0 :(得分:3)

这是因为你在做

 <%= flash.each

因此显示each的结果,以及块生成的任何内容。将&lt;%=更改为&lt;%