1

我已经实现了一个应用程序助手来动态地向视图提供 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
4

1 回答 1

3

这是因为你在做

 <%= flash.each

因此each会显示结果,以及块产生的任何内容。将 <%= 更改为 <%

于 2012-08-03T23:45:58.740 回答