假设我有一张这样的表:
我想根据类型{id1: 'Anamnse', id2: 'Befund', id3: 'Therapie'}
设置表格的行的样式。手动我只需添加引导类
我的问题是如何使用ruby自动实现此目的?这是我的代码,用于表格:
<table id="report" class="table table-striped ">
<tr>
<th>Typ</th>
<th>Beschreibung</th>
<th>Datum</th>
<th> </th>
</tr>
<% @patient.treatments.each do |treatment| %>
<tr>
<td><%= treatment.category.try(:typ) %></td>
<td><%= treatment.content %></td>
<td><%= treatment.day %></td>
<td><div class="arrow"></div></td>
</tr>
<tr>
<td colspan="5">
<%= link_to 'Löschen', [treatment.patient, treatment],
:confirm => 'Sind sie sicher?',
:method => :delete %>
<% treatment.paintings.each do |paint| %>
<%= image_tag paint.name.url(:thumb) %>
<% end %>
</td>
</tr>
<% end %>
</table>
结论:样式必须取决于
的值<td><%= treatment.category.try(:typ) %></td>
答案 0 :(得分:4)
您也可以这样使用辅助方法
<td <%= row_classname(:typ) %> ><%= treatment.category.try(:typ) %></td>
并在您的相关助手
中def row_classname(type)
switch type
when "somevalue"
classname = "someclass"
when "othervalue"
classname = "otherclass"
"class=\"#{classname}\"" unless classname.nil?
end
或类似的东西
答案 1 :(得分:3)
您可以定义映射,例如:
category_classes = { "Anamnse" => "success", "Befund" => "warning", "Therapie" => "error" }
并使用此映射分配类:
<% category_classes = { "Anamnse" => "error", "Befund" => "warning", "Therapie" => "success" } %>
<% @patient.treatments.each do |treatment| %>
<tr class="<%= category_classes[treatment.category.try(:typ)] %>">
您也可以将其作为辅助方法提取,例如在app/helpers/application_helper.rb
:
def category_table_row_class(category_typ)
{ "Anamnse" => "success", "Befund" => "warning", "Therapie" => "error"}[category_typ]
end
或者改为使用category.id
:
def category_table_row_class(category)
{ 1: "success", 2: "warning", 3: "error"}[category.id]
end
并称之为:
<tr class="<%= category_table_row_class(treatment.category) %>">
顺便说一句,你应该使用<thead>
和<tbody>
作为头部和身体部分。
答案 2 :(得分:2)
请勿尝试动态更改CSS&#34;。这不是CSS的工作方式。相反,有条件地向元素添加一个类,并编写一些针对该类的新CSS。
这样的事情:
<tr class="<%= treatment.category.try(:typ) %>">
答案 3 :(得分:1)
<tr class="<%= treatment.category.try(:typ) %>">
这会将tr
类添加到等于typ
的值。