当不应该显示属性时,删除slim中的HTML标记属性



当类不应该在Slim中显示时,我想删除类属性。

在ERB中,我可以使用:

<input <%= "class='foo'" if false %> />
<input />

我如何在Slim中做到这一点?

我发现了这一点,但我觉得必须有一个更惯用的解决方案:

| <input "#{'class="foo"' if false}" />

如果一个属性的值是nil,那么整个属性将被忽略(实际上,在大多数情况下,nilfalse都会发生这种情况,但class属性在falsetrue中的表现似乎不同(:

input class=('foo' if condition)

这将输出

<input class="foo" />

如果conditiontrue,并且

<input />

如果CCD_ 9为假。

您可以使用splat(*(运算符来帮助定义slim中标记的条件属性,使用包含要添加的属性的哈希。

http://www.rubydoc.info/gems/slim/frames#Splat_attributes__

splat操作符会将散列扩展为一组要添加到标记中的属性。如果哈希为空,则不会添加任何属性。

例如,

- admin_classes = @User.admin? ? {class: "foo"} : {}
input *admin_classes

if@User.admin?==是的,它应该呈现

<input class="foo">

否则,如果@User.admin?==false,则应呈现

<input>   

对于像"class"这样的属性或其他启用了属性合并的属性,您也可以这样做:

- admin_classes = @User.admin? ? {class: ["foo","bar"]} : {}
input *admin_classes class="biz"

if@User.admin?==是的,它应该呈现

<input class="foo bar biz">

否则,如果@User.admin?==false,则应呈现

<input class="biz">   

最新更新