如何避免在 slim 视图中使用相同的条件两次

how to avoid using the same condition twice in slim views

我认为有以下代码:

.container
  .row
    .col
      h3 Header
      - if @status < 5
        p Text
    - if @status < 5
      .col
        p More text

如您所见,由于缩进很小,我使用了相同的条件两次。有什么办法可以避免这种情况吗?

我认为你唯一能做的就是重构它。

在任何地方都使用助手而不是硬编码条件,这样当您决定将 5 更改为 6 时,您只需在一个地方进行更改。

辅助方法

def valid_status?(status)
  status < 5
end

视图(苗条)

.container
  .row
    .col
      h3 Header
      - if valid_status?(@status)
        p Text
    - if valid_status?(@status)
      .col
        p More text

或者至少给一个变量赋值一次

- valid_status = @status < 5
.container
  .row
    .col
      h3 Header
      - if valid_status
        p Text
    - if valid_status
      .col
        p More text

您需要像 Deepak 建议的那样将条件提取到助手,并使用 partial render 提取 html 片段。大致是这样的:

.container
  .row
    .col
      h3 Header
        = render "render_text_1" if status_5? # Humanize status code to be more clear
    .col
      = render "render_text_2" if status_5?

看起来这个标记没有问题,所以这里最好的解决方案是保持原样。