【问题标题】:Has and belongs to many - display all records in table view拥有并属于许多 - 在表格视图中显示所有记录
【发布时间】:2017-09-26 13:13:44
【问题描述】:

我有一个名为 Patient 和 table patients 的模型

此模型 Patient 代表医生办公室的患者。

我有一个填充了不同性别名称的性别模型

Patient has_and_belongs_to_many :genders 和 Gender has_and_belongs_to_many :patients。

我对种族、关注点、保险有类似的实现。

在患者索引视图中,我试图显示给定患者的种族或种族、担忧或担忧、保险或保险(他们可能没有、1 个或多个)。我怎样才能一次显示所有这些?我能够弄清楚显示任何内容的唯一方法是调用 first.name ,如下所示。谢谢!

<table>
  <tr>
      <th>Patient ID</th>
      <th>Created</th>
      <th>Created By</th>
      <th>Staff Clinician</th>
      <th>Concerns</th>
      <th>Gender</th>
      <th>Race</th>
      <th>Insurance</th>
      <th>Referral Request</th>
  </tr>

<% @patients.each do |patient| %>
  <tr>
    <td><%= patient.id %></td>
    <td><%= patient.created_at.strftime("%Y-%m-%d") %></td>
    <td><%= patient.user_id %></td>
    <td><%= patient.staff_clinician_id %></td>
    <td><%= patient.concerns.first.name %></td>
    <td><%= patient.genders.first.name %></td>
    <td><%= patient.races.first.name %></td>
    <td><%= patient.insurances.first.name %></td>
    <td><%= link_to "Show", patient %></td>
    <td><%= link_to "Edit", edit_patient_path(patient) %></td>
    <td><%= link_to "Remove", patient, method: :delete, data: { confirm: "Are you sure?" } %></td>
  </tr>
<% end %>
</table>

【问题讨论】:

    标签: ruby-on-rails has-and-belongs-to-many


    【解决方案1】:

    您可以在集合上使用to_sentence

    &lt;td&gt;&lt;%= patient.concerns.map(&amp;:name).to_sentence %&gt;&lt;/td&gt;

    &lt;td&gt;&lt;%= patient.concerns.map{ |concern| concern.name&amp;.titleize }.to_sentence %&gt;&lt;/td&gt;

    &amp; 用于安全导航,这意味着如果关注点没有名称,则以下 .titleize 不会爆炸。

    无论如何,这种显示集合的方法在处理表格时非常好,因为只需要一个单元格来显示所有内容。

    【讨论】:

    • 谢谢 abax - 有没有 '.'在你的第二个例子中不合适?尝试将其插入代码时出现语法错误。
    • 在没有&amp; 的情况下仅使用name.titleize 是否有效? Ruby 2.3.0 中添加了安全导航运算符。可能取决于您的 Ruby 版本。我只能在不知道具体错误的情况下猜测。也许您可以在评论中发布它。
    【解决方案2】:

    你可以遍历每个模型实例,例如:

    <% patient.concerns.each do |concern| %>
        <td><%= concern.name %></td>
    <% end %>
    

    【讨论】:

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