Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3干扰了我的flash!_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails 3干扰了我的flash!

Ruby on rails Rails 3干扰了我的flash!,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个flash_助手,我不方便地从一些网络教程中下载了它,现在它又回来打我的头了。从好的方面来说,我相信这里的许多有才华的程序员会发现这很容易 此代码与“我的视图”中的结合将生成以下html代码: ["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil] …在视图本身中

我有一个flash_助手,我不方便地从一些网络教程中下载了它,现在它又回来打我的头了。从好的方面来说,我相信这里的许多有才华的程序员会发现这很容易

此代码与“我的视图”中的结合将生成以下html代码:

["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil]
…在视图本身中呈现为一个相当不吸引人的字符串:

["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil]
[“您的帐户已被重新激活。”,无,无]
我如何重写代码来解决这个问题


[零,零,零]


当没有flash时,上面的flash\u助手代码会将上面的字符串发送到我的所有视图。在没有flash的情况下,如何将代码重写为不输出任何内容?

默认情况下,Rails 3会转义HTML,除非另有说明。您只需在生成的字符串上调用.html\u safe即可。以下是概述:


您需要在数组中的所有字符串上启动html\u 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

谢谢你的回答。使用,我现在得到以下错误:未定义[nil,nil,nil]:数组的方法'html_safe'。您必须在方法中调用它,而不是在输出中调用它。Hi Shingara,非常感谢。这当然让我不用在每个视图中添加html_safe!我仍然在没有flash的视图上显示[nil,nil,nil],这是因为在调用该方法之前需要检查nil。基本上,如果你有一个flash,那么就调用flash\u helper,否则就不要调用它。这将使您获得所需的行为。嗨,Sosborn,调用nil不起作用,因为此帮助程序输出“[nil,nil,nil]”。如何重写上面的代码,使其在没有闪存的情况下不导出任何内容?Shingara-the.compact已将[nil,nil,nil]减少到[]。我怎么能把最后一对括号弄丢呢?
# application_helper
def flash_helper
  [:notice, :warning, :message].map { |f| 
    content_tag(:div, flash[f].html_safe, :class => f) if flash[f] 
  }.compact
end