我需要在我的网页标题中显示一些上标和下标字符我有一个helper方法,它可以识别下标或上标的模式,并将其转换为&sub2;或2
但是,当它显示在呈现页面的文件中时,它在源代码中显示为:

&sub2;

这是不对的我把它设置为:
<% provide(:title, raw(format_title(@hash[:page_title]))) %>

但生的不管用。如有任何帮助,我们将不胜感激。
方法:
def format_title(name)
label = name
if label.match /(_[\d]+_)+|(~[\d]+~)+/
  label = label.gsub(/(_([\d]+)_)+/, '&sub\2;')
  label = label.gsub(/(~([\d]+)~)+/, '&sup\2;')
  label.html_safe
else
  name
end

结束
我甚至试过:
str.gsub(/&amp;/, '&')

但它回报了:
&amp;amp;sub2;

最佳答案

您还可以使用Rails I18n实现这一点。

<%= t(:page_title_html, scope: [:title]) %>

在您各自的语言环境文件中(title.en.yml最有可能):
title:
  page_title: "Title with &sup2;"

这是关于下标和上标的HTML symbols图表。
有关更多信息,请查看Preventing HTML character entities in locale files from getting munged by Rails3 xss protection
更新:
如果需要动态加载页面标题,首先必须安装一个gem,比如Page Title Helper
您可以按照gem文档中的指南进行操作。

关于ruby-on-rails - 阻止Ruby将&更改为&?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38382454/

10-13 02:12