我正在使用rails教程中的一个帮助器方法,该方法将两个字符串连接在一起,以便在视图中的标题选择器中使用。它完全正常,除非字符串中有撇号。
当:group_name包含撇号时,它会出现如下:
<title>The website | O&#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) %>
答案 0 :(得分:9)
您需要添加.html_safe
,以便不会转义撇号。
"#{base_title} | #{page_title}".html_safe
答案 1 :(得分:4)
不耐烦地打电话给.html_safe
是一个坏主意。除非您完全控制base_title
和page_title
,否则您可以自行打开攻击,但我不确定哪种攻击可以利用<title></title>
标签
我遇到了同样的问题。解决方案不是使用字符串插值,而是:
base_title + ' | ' + page_title