Moh*_*mad 14 ruby ruby-on-rails slim-lang
我正在尝试渲染一个前面带有图标的链接.我正在使用Slim模板引擎和Bootstrap CSS.
通常您可以通过以下方式执行此操作:
<a href="#"><i class="icon-user"></i> My Profile</a>
根据Slim的文档,我们可以使用==渲染而不转义HTML.所以,将其翻译为Slim,我尝试了以下变化:
li== link_to "<i class='icon-user'></i> My Profile", current_user
li== link_to "#{'<i class="icon-user"></i>'.html_safe} My Profile", current_user
li= link_to "#{'<i class="icon-user"></i>'.html_safe} My Profile", current_user
渲染的所有变体都会<a href="/users/1"><i class="icon-user"></i> My Profile</a>转义i标记.
如何阻止Slim或Rails逃避html?
(Rails 3.2 with Slim 1.2.1)
mu *_*ort 11
您希望禁用link_to参数的HTML转义,而不是整个link_to结果.你跟你很近,html_safe但是你的字符串插值正在吃掉你的"安全的HTML"标志.这应该更好:
li= link_to '<i class="icon-user"></i> My Profile'.html_safe, current_user
nro*_*ose 11
已经回答了这个问题,但是如果你真的有一些html并且想要在一个纤薄的模板中渲染它,请使用double equal.
== "<i>test</i>"
将是一样的
= "<i>test</i>".html_safe
或者,您可以将其写为
li
  a href=url_for(current_user)
    i.icon-user My Profile
这可能有点容易阅读.