【发布时间】:2016-04-22 09:31:48
【问题描述】:
我开发了 Rails 应用程序。
&amp; 等字符在<title> 标记中转义为&amp;。
例如foo &amp; bar在标题中显示如foo &amp; bar。
当我使用raw 时,它可以按我的预期显示。但我不想使用raw,因为数据将由用户输入。
我想显示为this post(请仅查看标题。内容与我的问题无关)。尽管用户输入了&amp;,但标题中仍显示。
我的代码如下。
application.html.erb
<head>
<title><%= full_title(yield(:title)) %></title>
...
application_helper.rb
def full_title(page_title = '')
base_title = "app name"
if page_title.empty?
base_title
else
page_title + " | " + base_title
end
end
我在一些视图文件中添加了provide,例如show.html.erb。
<% provide(:title, @schedule.title) %> #this title is inputted by user
是否可以转义,但允许某些字符不转义?
【问题讨论】:
-
使用
.html_safe方法 -
.html_safe 相当于使用 raw。切勿将其用于用户输入。
-
我很困惑。那你想逃还是不逃?
-
你想转义它,但允许一些字符不转义吗?
-
&amp;必须转义为&amp;,<title>标签也不例外。如果您的浏览器字面上显示&amp;,您很可能已经转义了两次。顺便说一句,链接帖子的标题标签是<title>symfony2 - Symfony 2, Twig: how not to escape field value (used with backbonejs &amp; symfony 2) - Stack Overflow</title>。
标签: ruby-on-rails ruby ruby-on-rails-4