我想根据 slim-lang 中的条件将 css 类分配给 HTML 的一部分
我正在做以下事情
- if current_user
.title
- else
.title_else
现在我如何编写应该嵌套在上述类之一中的 HTML?我需要在if
条件和else
条件下编写 HTML 吗?
原因是应该嵌套在上述类之一中的 HTML 应该进一步向右。但如果我打算更正确,它包括在其他条件下。我现在应该如何处理?
我想根据 slim-lang 中的条件将 css 类分配给 HTML 的一部分
我正在做以下事情
- if current_user
.title
- else
.title_else
现在我如何编写应该嵌套在上述类之一中的 HTML?我需要在if
条件和else
条件下编写 HTML 吗?
原因是应该嵌套在上述类之一中的 HTML 应该进一步向右。但如果我打算更正确,它包括在其他条件下。我现在应该如何处理?
这是一个衬里:
.thing class=(current_user ? 'large-menu' : 'medium-menu')
h4 Same content, different class
由于您只是在两个属性之间切换,因此Tiago Franco 的答案肯定足以满足您的目的。但是,还有另一种派上用场的方法。
您可以使用capture
将 HTML 呈现为局部变量,然后将该内容嵌入到您喜欢的任何控制结构中。所以,如果你的包装内容有点复杂,你会这样做:
- shared_content = capture do
div This is displayed regardless of the wrapper
- if current_user
| You're logged in!
.title
= shared_content
- else
| You're not logged in!
.title_else
= shared_content
如果有可用的 URL,我会经常使用它来将内容包装在链接中:
- image = capture do
img src=image_url
- if url.blank?
= image
- else
a href=url = image
1) 是的,您需要将 HTML 写入两个创建的 div,因为您希望它有所不同。如果您不希望它有所不同,则无需if
声明!
2)我不太明白你的意思,但这段代码对我来说很好用:
- if true
.title
h4 True is true!
- else
.title_else
h4 True is not true!
这段代码显示了一个div
带有一个类的.title
a 和一个h4
带有其中文本的 a True is true!
。
编辑:好的,现在我明白你的意思了!不可能做这样的事情,因为它不会渲染h4 !
- if true
.title
- else
.title_else
h4 Same content, different class
我建议您编写一个助手,它允许您渲染部分,然后只从两个条件内渲染该部分。这意味着您只需编写一个部分并调用它两次。
- if true
.title
= render 'footer'
- else
.title_else
= render 'footer'