将带有撇号的字符串传递给辅助方法无法正确显示

时间:2012-10-24 15:30:57

标签: ruby-on-rails string

我正在使用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>

以下是:标题在另一个视图文件中设置的位置:app / views / submissions / show.html.erb

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

2 个答案:

答案 0 :(得分:9)

您需要添加.html_safe,以便不会转义撇号。

"#{base_title} | #{page_title}".html_safe

答案 1 :(得分:4)

不耐烦地打电话给.html_safe是一个坏主意。除非您完全控制base_titlepage_title,否则您可以自行打开攻击,但我不确定哪种攻击可以利用<title></title>标签

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

base_title + ' | ' + page_title