【问题标题】:Rails loop in table by column and groupRails 按列和组在表格中循环
【发布时间】:2018-08-21 02:53:54
【问题描述】:

我希望生成一个循环表,其中每个处理都有 3 个结果。我想在一行中包含日期、度数,然后列出每个单独的治疗。

控制器

@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

到目前为止,我有这个:

<table class="table table-bordered">
 <th>Date</th>
 <th>Degree</th>
 <% @max_length.times do |data| %>
 <th><%= @trial.treatment_selections[data].try(:treatment).try(:name) %></th>
 <% end %>
 <% @max_length.times do |data| %>
 <% @trial.methods.order(:treatment_selection_id).order("assessment_date ASC").in_groups_of(3)[data].each_with_index do |e, index| %>
  <tr>
  <td></td>
  <td><%= Time.at(e.try(:assessment).try(:assessment_date)/1000).strftime("%d/%m/%Y") rescue 0 %></td>
  <td><%= e.try(:assessment).try(:degrees) rescue 0 %></td>
  <td><%= e.try(:total).round(1) rescue 0 %></td>
  </tr> 
  <% end %>
  <% end %>
</table>

产生这个:

但我希望它产生这个:

【问题讨论】:

  • 什么是@trial
  • 包括与此视图相关的模型。
  • 愿意提供帮助。您能否将此处使用的表格结构与示例数据分享一下?

标签: ruby-on-rails ruby-on-rails-5


【解决方案1】:

我会说你的代码中至少有两个问题:

1_ 你的一个班轮似乎不像你想象的那样工作,在控制台中测试结果以确保它真的是你所期望的。如果没有关于您的模型的更多详细信息,我们将无法为您提供更多帮助。

<% @trial.methods.order(:treatment_selection_id).order("assessment_date ASC").in_groups_of(3)[data].each_with_index do |e, index| %>

2_ 如果您的&lt;td&gt;...degre...&lt;/td&gt; 后面只有一个&lt;td&gt;...&lt;/td&gt;,则不能填写第 4 列(治疗 2)、5(治疗 3)、6(治疗 4)。

您可能需要像为 &lt;th&gt;treatment x&lt;/th&gt; 所做的那样在此处放置一个循环

【讨论】:

    【解决方案2】:

    我猜你最后一张表中的每一行都是一个评估,每个评估的每一列(处理 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 %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多