我正在尝试在图标之前呈现链接。我正在将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?
(具有Slim 1.2.1的Rails 3.2)
您想为link_to
参数而不是整个link_to
结果禁用HTML转义。您非常接近html_safe
,但是字符串插值正在吞噬“ safe for HTML”标志。这应该更好地工作:
li= link_to '<i class="icon-user"></i> My Profile'.html_safe, current_user
这已得到回答,但是如果您实际上有一些html并想在一个苗条的模板中呈现它,请使用double equal。
== "<i>test</i>"
将与]相同>
= "<i>test</i>".html_safe
或者,您可以这样写:
下面有另一种解决方法,以防万一。如果您要在链接中包含更复杂的代码,则使用块特别有用。
如果愿意,您可以使用苗条语法而不是'raw'html来执行类似的技术: