Rails 3正在弄乱我的闪光灯!

时间:2010-10-05 06:06:14

标签: ruby-on-rails ruby-on-rails-3

我有一个flash_helper,我从一些网络教程中不方便地下载了,现在又回到了我的脑海中。从好的方面来说,我相信这里有很多才华横溢的程序员会觉得这很容易。 :)

# application_helper
def flash_helper
[:notice, :warning, :message].map { |f| content_tag(:div, flash[f], :class => f) if flash[f] }
end

此代码与<%= flash_helper%>结合使用在我的观点中,导致生成以下html代码:

["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil]

...在视图中呈现为相当不吸引人的字符串:

["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil]

如何重写代码以对其进行排序?


[nil,nil,nil]

当没有闪存时,上面的字符串被上面的flash_helper代码发送到我的所有视图。如果没有闪存,如何重写该代码以输出任何内容?

2 个答案:

答案 0 :(得分:2)

您需要在阵列上的所有String上启动html_safe。

# application_helper
def flash_helper
  [:notice, :warning, :message].map { |f| 
    content_tag(:div, flash[f].html_safe, :class => f) if flash[f] 
  }.compact
end

答案 1 :(得分:0)

默认情况下,Rails 3会转义HTML,除非另有说明。您需要做的就是在生成的字符串上调用.html_safe。以下是概述:

HTML SAFE