gpt4 book ai didi

ruby - 如何在不重复缩进代码的情况下在 HAML 中执行 if/else

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:24 26 4
gpt4 key购买 nike

根据用户是否登录,我想打印不同类型的 %body-tag。

我目前是这样做的:

- if defined? @user
%body(data-account="#{@user.account}")
%h1 Welcome
-# all my content
- else
%body
%h1 Welcome
-# all my content

如您所见,其中有很多重复代码。我怎样才能消除这个?我已经尝试过以下方法:

- if defined? @user
%body(data-account="#{@user.account}")
- else
%body
%h1 Welcome
-# all my content

不幸的是,这不起作用,因为 HAML 将其解释为好像 %h1 和内容是 else 语句的一部分,当然它们不是。

关于如何解决这个问题的任何想法?我一直遇到这个问题,所以我无法想象没有简单的解决方案。

最佳答案

我认为您无法避免缩进问题,因为 HAML 自动分配“end”语句的方式,但您可以改为将 if 语句插入 body 标记本身 -

%body{:data_account => (defined? @user ? @user.account : nil)}

相对于

%body(data-account="#{@user.account}")

不是 super 漂亮,但比重复整个 block 更不丑陋!

关于ruby - 如何在不重复缩进代码的情况下在 HAML 中执行 if/else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3460734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com