我正在寻找一个循环表,每种处理都有3个结果。我想在一行中包含日期,度数,然后列出每个单独的处理方法。
控制器
radio2
模型
@trial = Trial.find(params[:trial_id])
@max_length = [@trial.treatment_selections].map(&:size).max
到目前为止,我有这个:
has_many :treatment_selections, primary_key: 'trial_id'
has_many :assessments, primary_key: 'trial_id'
has_many :methods, through: :assessments
哪个生成此:
但是我希望它产生这个:
答案 0 :(得分:0)
我想说您的代码中至少存在两个问题:
1_您的一根衬纸似乎不起作用,请在控制台中测试结果以确保它确实是您所期望的。如果没有有关您的模型的更多详细信息,我们将为您提供更多帮助。
<% @trial.methods.order(:treatment_selection_id).order("assessment_date ASC").in_groups_of(3)[data].each_with_index do |e, index| %>
2_如果<td>...</td>
之后只有一个<td>...degre...</td>
,则无法填充第4(处理2),第5(处理3),第6(处理4)列。
您可能需要像在<th>treatment x</th>
答案 1 :(得分:0)
我猜您最后一张表中的每一行都是一种评估,每种评估的每一列(处理1至4)都是一种方法。因此,您将需要嵌套循环:
<% @trial.assessments.order("assessment_date ASC").each do |a| %>
<tr>
<td></td>
<td><%= Time.at(a.try(:assessment_date)/1000).strftime("%d/%m/%Y") rescue 0 %></td>
<td><%= a.try(:degrees) rescue 0 %></td>
<% a.methods.each do |m| %>
<td><%= m.try(:total).round(1) rescue 0 %></td>
<% end %>
</tr>
<% end %>