2

可以说我有一张这样的桌子:在此处输入图像描述

我想根据类型设置表格行的样式{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>
4

4 回答 4

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

或类似的东西

于 2013-06-19T15:13:14.160 回答
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>and<tbody>用于头部和身体部分。

于 2013-06-19T15:20:39.130 回答
2

不要尝试“动态更改 CSS”。这不是 CSS 的工作方式。相反,有条件地向元素添加一个类,并编写一些针对该类的新 CSS。

像这样的东西:

<tr class="<%= treatment.category.try(:typ) %>">
于 2013-06-19T15:11:03.040 回答
1
<tr class="<%= treatment.category.try(:typ) %>">

这将添加到tr等于typ值的类中。

于 2013-06-19T15:11:19.813 回答