如何避免在 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?
看起来这个标记没有问题,所以这里最好的解决方案是保持原样。
我认为有以下代码:
.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?
看起来这个标记没有问题,所以这里最好的解决方案是保持原样。