0

Rails 是否应该自动转义 Flash 消息?如果没有,如何确保消息被转义(不使用CGI::escapeHTML)?

经过一番搜索,我发现它应该被转义,并且得到了 html_safe 一条消息以显示 html。但是当我尝试

flash[:error] = "<b>YO</b>"

它显示为粗体YO而不是<b>YO</b>. 请注意,字符串对象本身不是 html_safe。

4

3 回答 3

0

您应该html_safe在控制器中使用您想要转义的 Flash 消息。它从视图中删除原始函数。

flash[:error] = "<b>YO</b>".html_safe
于 2015-06-15T12:30:27.687 回答
0

处理此问题的正确方法是在您显示 Flash 消息的最后位置,这很可能是application.html.erb. 改变

<%= message %>

  <% flash.each do |message_type, message| %>
    <div class="alert alert-<%= message_type %>"><%= message %></div>
  <% end %>

<%= sanitize message %>

请记住,始终将字符串应用于sanitize您的字符串所经过的管道的终点,以确保您获得您的风格。

于 2017-10-09T06:13:23.230 回答
0

未使用CGI::escapeHTML. 您可以ERB::Util.html_escape在控制器中使用

flash[:error] = escape_html('<b>Yo</b>')
....

private
  def escape_html(string_to_escape)
    ERB::Util.html_escape(string_to_escape)
  end
于 2018-11-01T11:12:41.513 回答