Отображать данные в табличном формате из таблиц, которые имеют ассоциации - PullRequest
1 голос
/ 01 октября 2019

У меня есть 3 таблицы, Работа, Регистрация и Навыки. Ассоциации - Работа имеет много регистраций, и регистрация принадлежит работе. Регистрация имеет много навыков, и навык принадлежит работе. Мой БД может нести до 5 схожих навыков, если один человек не обладает одинаковыми навыками дважды.

Задача: Я пытаюсь передать навыки одного человека за столомформат выглядит следующим образом: Table format

Я сгруппировал кандидатов в соответствии с заданиями, на которые они оба претендовали, по шаблону 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

Как я уже говорил, навыки находятся на другом столе, и у него есть регистрационный_ид, чтобы можно было узнать, кому принадлежит какой навык, как я могу отобразить навыки в соответствии с каждым человеком в таблицеформат

1 Ответ

1 голос
/ 01 октября 2019

Ваш «заявитель» такой же, как ваш registration?

Вы не включили свои действительные схемы, но это должно дать вам общее представление:

Вы можете предварительно загрузить навыки, которые принадлежат вашим приложениям.

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

По вашему мнению, вы можете справиться с тем, как отобразить навыки в вашей таблице. Если вы просто хотите, чтобы они были разделены запятыми, вы можете сделать что-то вроде ...

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

...