避免逻辑视图中的
与标准方法的问题是,它需要在逻辑中的视图if
陈述或者ternaries形式。如果您有多个条件CSS类与默认类混合在一起,那么您需要将该逻辑放入字符串插值或ERB标记中。
这里有一个更新的办法,避免把任何逻辑入观点:
<div class="<%= class_string(ok: @success) %>">
some message here
</div>
class_string
方法
的class_string
助手负责的哈希与由CSS类名字符串和键/值对布尔值。该方法的结果是一个布尔值计算为true的类的字符串。
用法示例
class_names(foo: true, bar: false, baz: some_truthy_variable)
# => "foo baz"
其他用例
这个助手可以在ERB
标签或使用Rails助手如link_to
使用。
<div class="<%= class_string(ok: @success) %>">
some message here
</div>
<% div_for @person, class: class_string(ok: @success) do %>
<% end %>
<% link_to "Hello", root_path, class: class_string(ok: @success) do %>
<% end %>
或/或类
对于使用的情况下的三元将是必要的(例如@success ? 'good' : 'bad'
),传递一个阵列,其中所述第一元件是用于true
类,另一个是用于false
<div class="<%= [:good, :bad] => @success %>">
灵感来自阵营
该技术是通过一个附加称为启发(前身为classSet
)来自Facebook的React
前端框架。
使用在你的Rails项目
截至目前,该class_names
功能并不在Rails的存在,但this article告诉您如何添加或落实到项目中。
+1标签帮手似乎是一个干净的方法 – Anurag 2010-04-13 05:09:28
@meager,我不知道'div_for'。非常酷:) – 2010-04-13 05:15:28
@Anurag,请查看http://api.rubyonrails.org/classes/ActionController/RecordIdentifier.html#M000482。漂亮的东西。 – 2010-04-13 05:22:04