如何在 Slim 中有条件地换行或缩进

How to conditionally wrap or indent in Slim

这个问题重复的可能性很大,因为我不知道如何正确提问。我正在寻找在 Slim.

中有条件地换行或缩进的最佳实践

先举个直接ERB的例子

<% if some_condition? %>
  <a href="#">
<% end %>
    <span>foo</span>
<% if some_condition? %>
  </a>
<% end %>

如果 condition? returns 为真,您将得到 <a href="#"><span>foo</span></a>。如果没有,你只会得到 <span>foo</span>.

在 Slim 中,我不确定最合适的处理方式是什么。

也许假设我有一种渲染局部的方法...

# _span-foo.html.slim
span foo
# view.html.slim
- if some_condition?
  a href="#"
    = partial "_span-foo.html.slim"
- else
  = partial "_span-foo.html.slim"

是的,您的方法可能是实现您的目标的最佳方式。

我找到了这个

并使用@craig-walker答案,您可以在一个文件中将其解决为

# view.html.slim
- span_content = capture do
  span foo

- if some_condition?
  a href="#"
    = span_content
- else
  = span_content