HAML:创建容器/包装元素只有当条件为真

远射,但我不知道是否有任何方式做这样的事情:HAML:创建容器/包装元素只有当条件为真

%p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE 

= name

换句话说,它总是显示里面的内容,但是如果(some-condition)是真的,它只能在它周围包装一个容器。

回答:

你可以使用原始的HTML,但你得有if语句都在开始和结束:

- if show_paras 

<p>

= name

- if show_paras

</p>

假设你不仅仅是= name做得更多,你可以使用一个部分:

- if show_paras 

%p= render "my_partial"

- else

= render "my_partial"

您也可以使用HAML的surround(虽然这是一个有点乱):

- surround(show_paras ? "<p>" : "", show_paras ? "</p>" : "") do 

= name

最后,我可能会做的不是试图在所有省略p标签,并且只使用CSS类设置两个不同的p风格看我想要的方式:

%p{:class => show_paras ? "with_paras" : "without_paras"} 

= name

回答:

最干净的方法,我可以想到这样做是这样的:

= show_paras ? content_tag(:p, name) : name 

但它不完全哈姆。

一般标记是为内容,所以如果show_paras是你或许应该使用CSS来更改%p的行为更为表象的调整,而不是

回答:

另一种选择是把它包在替代标签,如果该条件不满足,使用haml_tag

- haml_tag(show_paras ? :p : :div) do 

= name

回答:

- haml_tag_if show_paras, :p do 

= name

https://github.com/haml/haml/commit/66a8ee080a9fb82907618227e88ce5c2c969e9d1

以上是 HAML:创建容器/包装元素只有当条件为真 的全部内容, 来源链接: utcz.com/qa/261905.html

回到顶部