Rails应用程序标题标签中的撇号显示为“'”

3
在我的Rails应用程序的标题选项卡中,撇号显示为"'"。在其他地方,撇号显示正确。我该如何解决这个问题?
谢谢。
2个回答

4

我不确定您希望撇号显示为'还是'

如果您将撇号放在双引号字符串中,则可以正确呈现:

<title><%="example 'title'" %></title> #=> example 'title'

如果您将&#39;放在双引号字符串中,则其将按照原样返回。
<title><%="example &#39;title&#39;" %></title> #=> example &#39;title&#39;

最后,如果您想使用&#39;并使其被正确解析,则可以使用raw

<title><%=raw "example &#39;title&#39;" %></title> #=> example 'title'

如果它没有按预期工作,那么可能是浏览器问题,但我已经测试过最新版本的Firefox和Safari,它可以正常工作。

3

为了帮助那些需要提高他们的“谷歌功夫”的人。

如果您在这里是因为您正在每个页面上使用rails标题,例如SO:rails-how-to-change-the-title-of-a-page,并且记录中您的撇号出现了&#39,而您只想要一个'(即My Dog's Pants而不是My Dog&#39s Pants),那么您可以查看这个答案,它使用了ruby字符串插值#{}.html_safe

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

作为示例,我在我的post.rb模型中放置了一个方法:

  def page_title
    "#{ id.to_s +  " - " + name }".html_safe
  end

然后在我的posts_controller.rb中,我有:

@title = @post.page_title

然后在我的application.html.erb文件中有:

<body>
  <title><%= ("Post - " + yield(:title) + " - " unless yield(:title).blank?).to_s + "jaykilleen.com" %></title>
</body>

然后在我的帖子的show.html.erb中,我有:

<% content_for :title, @title if @title.present? %>

不要使用html_safe,因为它可能会在用户内容(如账户名称等)上存在安全隐患。请使用sanitize(yield(:title))。它可以正确地呈现撇号,并删除任何危险的XSS代码。 - Joshua Pinter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接