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