0

我不确定为什么会发生这种情况,但是当我在我的 rails 应用程序中成功提交表单时,它会在我成功的 flash 消息中添加一个错误的 div 类。我正在将此代码用于我的 Flash 消息:

<% flash.each do |name, msg| %>
   <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
      <a class="close" data-dismiss="alert">&#215;</a>
      <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
   </div>
<% end %>

这正是 Ryan Bates 在这个 rails cast 中建议的做法:

http://railscasts.com/episodes/329-more-on-twitter-bootstrap?view=asciicast

该代码有什么问题?如果我简单地这样做,它就可以正常工作:

<% flash.each do |name, msg| %>
  <div class="alert alert-<%= name %>">
    <a class="close" data-dismiss="alert">&#215;</a>
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
  </div>
<% end %>

但这似乎不是正确的方法。我不明白为什么 railscast 中建议的代码不起作用。

4

2 回答 2

0

据我记得,flash有时包含空元素。flash在迭代之前检查你是否有东西。

于 2012-08-27T04:29:41.060 回答
0

当您在控制器中创建闪存消息时,您可以使用字符串'notice'而不是符号。:notice尝试在您的中添加这些行,application.html.haml以查看您从 Flash 消息中得到什么

- if Rails.env.development?
  = debug(params) 
  = debug(flash) unless flash.empty?
于 2012-08-27T04:50:44.473 回答