Ruby on rails HAML:仅当条件为true时创建容器/包装器元素
Longshot,但我想知道是否有任何方法可以这样做:Ruby on rails HAML:仅当条件为true时创建容器/包装器元素,ruby-on-rails,haml,Ruby On Rails,Haml,Longshot,但我想知道是否有任何方法可以这样做: %p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE = name = show_paras ? content_tag(:p, name) : name 换句话说,它总是显示里面的内容,但只有当(某些条件)为真时,它才会在其周围包装一个容器。您可以使用原始html,但在开头和结尾都必须有if语句: - if show_paras <p> = name -
%p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE
= name
= show_paras ? content_tag(:p, name) : name
换句话说,它总是显示里面的内容,但只有当(某些条件)为真时,它才会在其周围包装一个容器。您可以使用原始html,但在开头和结尾都必须有if语句:
- if show_paras
<p>
= name
- if show_paras
</p>
您也可以使用HAML的环绕声
(虽然这有点凌乱):
我能想到的最干净的方法是:
%p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE
= name
= show_paras ? content_tag(:p, name) : name
但这不完全是哈姆
通常,标记是内容的首选标记,因此,如果show_paras是一个更具代表性的调整,您可能应该使用css来更改%p的行为,而不是另一个选项是,如果不满足条件,则使用
haml_标记将其包装在替代标记中:
- haml_tag(show_paras ? :p : :div) do
= name
谢谢,环绕声是我一直在寻找的东西。正如你所说的,有点混乱,但是你可以通过在环绕声上构建一个辅助功能使它非常干净。谢谢是的,我接受你的观点,但在我的例子中,它有点复杂,因为里面有条件内容,在某些情况下可能会成为段落(或节等),但在其他情况下,只是一个简单的div/span。这是旧的haml_tag_if!美好的
- haml_tag(show_paras ? :p : :div) do
= name
- haml_tag_if show_paras, :p do
= name