如何在Slim模板中呈现HTML

问题描述 投票:15回答:5

我正在尝试在图标之前呈现链接。我正在将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)

ruby-on-rails ruby slim-lang
5个回答
12
投票

您想为link_to参数而不是整个link_to结果禁用HTML转义。您非常接近html_safe,但是字符串插值正在吞噬“ safe for HTML”标志。这应该更好地工作:

li= link_to '<i class="icon-user"></i> My Profile'.html_safe, current_user

13
投票

这已得到回答,但是如果您实际上有一些html并想在一个苗条的模板中呈现它,请使用double equal。

== "<i>test</i>"

将与]相同>

= "<i>test</i>".html_safe

9
投票

或者,您可以这样写:


1
投票

下面有另一种解决方法,以防万一。如果您要在链接中包含更复杂的代码,则使用块特别有用。


0
投票

如果愿意,您可以使用苗条语法而不是'raw'html来执行类似的技术:

© www.soinside.com 2019 - 2024. All rights reserved.