我想根据slim-lang中的条件为一部分HTML分配一个css类
我正在做以下
- if current_user
.title
- else
.title_else
现在我如何编写应该嵌套在上面一个类中的HTML?我是否需要在if
条件和else
条件下编写HTML?
原因是应该嵌套在上述类之一中的HTML应该是向右的。但是,如果我打算进一步正确,它包括在其他情况下。我现在怎么看待这个?
答案 0 :(得分:32)
这是一个班轮:
.thing class=(current_user ? 'large-menu' : 'medium-menu')
h4 Same content, different class
答案 1 :(得分:17)
由于您只是在两个属性之间切换,Tiago Franco's answer肯定足以满足您的需求。但是,还有另一种方法可以派上用场。
您可以使用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
如果有可用的网址,我会经常使用它来将内容包装在链接中:
- image = capture do
img src=image_url
- if url.blank?
= image
- else
a href=url = image
答案 2 :(得分:3)
1)是的,您需要将HTML写入两个创建的div中,因为您希望它们不同。如果您不希望它有所不同,则不需要if
语句!
2)我真的不明白你的意思,但这段代码对我来说非常好:
- if true
.title
h4 True is true!
- else
.title_else
h4 True is not true!
此代码显示div
类.title
和h4
,其中包含文字True is true!
。
编辑:好的,现在我明白你的意思了! NOT 可以做这样的事情,因为它不会渲染h4!
- if true
.title
- else
.title_else
h4 Same content, different class
我建议你写一个帮助器,它允许你渲染局部,然后从两个条件内部渲染部分。这意味着你只需要写一个部分并调用它两次。
- if true
.title
= render 'footer'
- else
.title_else
= render 'footer'