3

我正在使用 rails 教程中的辅助方法,该方法将两个字符串连接在一起,以便在视图中的标题选择器中使用。它工作得很好,除非字符串中有撇号。

当 :group_name 包含撇号时,结果如下:

<title>The website | O&amp;#x27;Malley Brothers</title>

这是方法:app/helpers/application_helper.rb

module ApplicationHelper

  def full_title(page_title)
    base_title = "Chicago Improv Festival"
    if page_title.empty?
      base_title
    else
      "#{base_title} | #{page_title}"
    end
  end
end

这是它在布局视图中的使用方式。应用程序/视图/布局/application.html.erb:

<title><%= full_title(yield(:title)) %></title>

这是在另一个视图文件中设置 :title 的位置:app/views/submissions/show.html.erb

<% provide(:title, @submission.group_name) %>
4

2 回答 2

9

您需要添加.html_safe,这样撇号就不会被转义。

"#{base_title} | #{page_title}".html_safe
于 2012-10-24T15:34:47.043 回答
4

随便打电话是个坏主意.html_safe。除非你完全控制base_title然后page_title你打开自己的攻击,虽然我不确定什么样的攻击可以利用<title></title>标签。

我有同样的问题。解决方案是不使用字符串插值,而是:

base_title + ' | ' + page_title
于 2015-11-16T09:47:37.997 回答