我有一个控制器,它在渲染视图并输出错误之前执行以下行。
flash[:error]="Flash error"
flash[:info] = "Flash info"
我想很好地格式化这个。为此,我写了一个看起来像这样的助手
def show_flash
a=""
[:success, :info, :error, :warning].each do |key|
a += content_tag(:div, flash[key], :id => key, :class => "#{key}") unless flash[key].blank?
end
end
在我看来,我呼吁:
<%= show_flash %>
当我尝试运行它时,网页会呈现 show_flash 的全文,包括 div 标签、尖括号和所有内容。当我检查元素(使用 Firefox 或 Chrome)时,它会显示用双引号括起来的文本。
然后我尝试在帮助程序中更改一行,如下所示:
a = content_tag(:div, flash[key], :id=>key, :class=>"#{key]") unless flash[key].blank?
即我只会捕获最后一个内容标签(错误)而不是两者。
在第二种情况下,Web 浏览器使用我的“错误”类的 CSS 规则正确格式化了 div 标签。我没有看到浏览器中打印出任何 div 标签。
为什么连接两个 content_tag 元素会导致我如此悲痛?
我很感激你能给我的任何帮助。