首页 > 解决方案 > 以表格格式显示具有关联的表格中的数据

问题描述

我有 3 张桌子,工作、注册和技能。关联是一个作业有很多注册,一个注册属于一个作业。一个注册有很多技能,一个技能属于一个工作。只要一个人没有两次相同的技能,我的db最多可以携带5个相似的技能。

问题: 我试图以这样的表格格式呈现一个人的技能: 表格格式

我根据他们在模板上申请的工作对申请人进行分组,dashboard.ex如下所示

<%= for {k,v} <- sort_by_job() do %>
  <tr>
    <td rowspan="8"><%= k %></td>
    <%= Enum.map(v, fn applicant -> %>
    <td>
      <tr>
        <td><%= applicant.name %></td>
        <td><%= applicant.email %></td>
        <td><%= applicant.website %></td>
        <td><%= applicant.cover_letter %></td>
      </tr>
    </td>
      <% end) %>

被调用的sort_job函数位于视图 (dashboad.ex) 上,它返回每个工作类别中人员的姓名。代码是

def sort_by_job() do
  Enum.group_by(
   Applications.get_all_applicants(),
   fn applicant -> applicant.jobs.name end
  )
end

前面说了,技能在另外一张桌子上,有registration_id,可以知道哪个技能属于谁,怎么按照表格格式按照每个人渲染技能呢?

标签: elixirphoenix-framework

解决方案


你的“申请人”和你的一样registration吗?

你没有包括你的实际模式,但这应该给你一个大致的想法:

您可以预加载属于您的应用程序的技能。

Application
|> Repo.all()
|> Repo.preload(:skills)

在您看来,您可以处理如何在表格中显示技能。如果您只是希望它们以逗号分隔,您可以执行类似...

applicant.skills
|> Enum.map(skill.name)
|> Enum.join(",")


推荐阅读