ruby-on-rails - 标题标签在 Rails/HAML 中被转义两次

标签 ruby-on-rails ruby-on-rails-3 escaping haml title

我有一个 Rails 3.2.13 应用程序,其中的标题包含站点名称和页面特定文本。公共(public)部分在布局中定义,在每个 HAML View 中定义页面特定部分。

首先我使用了provide像这样:

# layout.html.haml
%title= (content_for?(:title) ? "#{yield(:title)} | " : "") + "Chunky-B"

# show.html.haml
- provide(:title, @listing.name)

我的问题是,当从模型中提取页面特定内容时,它会得到 两次逃跑 .如果 @listing.name包含一个(未转义的)&符号我得到输出
<title>Bacon &amp;amp; Eggs | Chunky-B</title>

我最近改用 the meta-tags gem对于我的标题和元描述,但同样的问题仍然存在。

我知道我需要一些 h 的组合, html_safe甚至可能raw .回答 this question和一些尝试和错误我可能会到达那里,但我以前不必绕过内置的转义,并且不想冒着打开漏洞的风险事后猜测自己。在写这个问题时,我有一种预感,但我敢打赌,热切的回答者会打败我。 :)

最佳答案

像往常一样,我一直在看答案。

我通过使用 (h @listing.name).html_safe 得到了我想要的结果根据 this comment ,如果我相信评论者,它是“常见且可接受的使用”。

如果我理解正确,我会强制使用 h 转义名称保护我免受各种邪恶,然后用 .html_safe 将其标记为不需要任何额外的转义称呼。

一切看起来都很好,输出被转义一次并在我的浏览器标题栏中正确呈现。不过,我可以放心,这是安全可靠的。如果有人能给出一个高质量的答案,说明为什么我没有开箱即用地得到相同的结果,我会准备好将其标记为已接受。

关于ruby-on-rails - 标题标签在 Rails/HAML 中被转义两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18080517/

相关文章:

ruby-on-rails - 如何在 Rails Controller 中调用 channel 方法?

ruby-on-rails - 渲染 :template and render :partial in rails 3 之间的差异

javascript - 在Rails 3中从observe_field更改为JQuery

ruby-on-rails - 是否可以像 gem 一样使用 Rails-project?

bash - Bash 转义字符 "\c"是什么?

ruby-on-rails - 修改继承的 Rails 关联

ruby-on-rails - 在另一个选项卡中设计登录/注销后 InvalidAuthenticityToken

ruby-on-rails - Mongoid 5.0 - Rails 4 - Finder 停止工作

Python:如何以颜色打印变量的值

java - 如何从字符串变量中的转义序列中转义