【发布时间】:2011-05-05 11:53:24
【问题描述】:
我最近遇到了一个问题,要转义模板中的 yield 返回的值。
在我的布局中,我生成了元描述,以便我可以从我的模板中定义它
<meta name="description" content="<%= yield :html_description %>" />
这是我的模板,不幸的是,它没有按预期转义值:
<% content_for :html_description, 'hello "you" guy' %>
<meta name="description" content="hello "you" guy" />
我试图用 h() 转义器来逃避它,但它不起作用:
<meta name="description" content="<%= h(yield :html_description) %>" />
<meta name="description" content="hello "you" guy" />
我也尝试过使用 escape_once(),但它做的太多了:
<meta name="description" content="<%= escape_once(yield :html_description) %>" />
<meta name="description" content="hello &quot;you&quot; guy" />
但是,通过将返回的值与字符串连接,它可以解决问题:
<meta name="description" content="<%= '' + (yield :html_description) %>" />
<meta name="description" content="hello "you" guy" />
有人理解这种行为吗?
您有比这种巧合修复它的串联更好的解决方案吗?
我正在使用 Rails 2.3.8 - 谢谢!
【问题讨论】:
-
嗨,您尝试了 escape_javascript 助手吗?
-
否,但在此上下文中没有 javascript。
标签: ruby-on-rails escaping yield html