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

时间:2018-08-27 06:51:59

标签: ruby-on-rails slim-lang

我的视图中包含以下代码:

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

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

3 个答案:

答案 0 :(得分:0)

我认为您唯一可以做的就是重构它。

请在各处使用帮助程序,而不要使用硬编码条件,因此,当您决定将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

答案 1 :(得分:0)

您需要将条件提取到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?

答案 2 :(得分:0)

此标记似乎没什么问题,因此最好的解决方案是保持原样。