很难实现,但我想知道是否有办法做到这样:
%p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE
= name
换句话说,它总是显示内容,但只有在 (some-condition) 为真时才会将容器包装在其中。
很难实现,但我想知道是否有办法做到这样:
%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
,你可以使用partial函数:
- 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
另一个选择是,如果条件不满足,可以使用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
= show_paras ? content_tag(:p, name) : name