苗条的动态条件类


Answers:


143

请参阅以下示例:

div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)

可以使用相同的方法将动态值分配给其他属性。


2
在多种情况下您将如何做?
Maxim Zubarev 2014年

请参阅下面注释中的答案。
Sergey Alekseev 2014年

3
这也可以附加一个类,例如: div.councilor class=(councilor.retired? ? "retired" : "") 生成:div.councilor.retired
Terra Ashley

20

如果不需要在列表中包含类,则使用类数组和nil元素,然后使用紧凑数组删除nil元素,最后将所有元素合并在一起。

div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))

12

如果您有多种情况,我现在正在做的事情是

div class=(('foo ' if is_foo?) + ('bar' if is_bar?))

虽然我觉得is_bar有点瑕疵?返回false并且生成的HTML结果在

<div class="foo "></div>

(瑕疵是后面的空白字符foo)。如果有人有解决方案,那就太好了。


7
String#rstrip在这种情况下,请尝试以下两种情况: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)。还是div class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))针对几种情况。
谢尔盖·阿列克谢夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.