HAML:仅当condition为true时才创建容器/包装元素

mah*_*off 10 haml ruby-on-rails

Longshot,但我想知道是否有办法做这样的事情:

%p # ONLY SHOW THIS IF LOCAL VARIABLE show_paras IS TRUE
  = name
Run Code Online (Sandbox Code Playgroud)

换句话说,它总是显示内部的内容,但如果(某些条件)为真,它只会在它周围包装一个容器.

Dyl*_*kow 15

你可以使用原始的html,但是你必须在开头和结尾都有if语句:

- if show_paras
  <p>
= name
- if show_paras
  </p>
Run Code Online (Sandbox Code Playgroud)

假设你做的不仅仅是= name,你可以使用部分:

- if show_paras
  %p= render "my_partial"
- else
  = render "my_partial"
Run Code Online (Sandbox Code Playgroud)

你也可以使用HAML surround(虽然这有点乱):

- surround(show_paras ? "<p>" : "", show_paras ? "</p>" : "") do
  = name
Run Code Online (Sandbox Code Playgroud)

最后,我可能会做的不是尝试省略p标记,只是使用CSS类来设置两种不同的p样式来查看我想要的方式:

%p{:class => show_paras ? "with_paras" : "without_paras"}
  = name
Run Code Online (Sandbox Code Playgroud)