Выбор правильного объекта при итерации по нескольким экземплярам. — Рельсы

У меня есть семь различных assignmentобъектов. В настоящее время я перебираю каждый экземпляр, а затем перебираю usersкаждое назначение. Я пытаюсь designateпользователей к назначению. У меня есть has_many через таблицу, которая назначает пользователю назначение. Но моя проблема сейчас заключается в том, что он продолжает выбирать первое задание, когда я пытаюсь выбрать четвертое задание. То, как я итерирую с HTML, неправильно, но я не могу понять, что я делаю? Вот мой HTML.

HTML:

<div class="assignments">
  <% @assignments.each do |assignment| %>
    <ul>
      <li><%= link_to assignment.name, account_assignment_path(assignment) %></li>
      <%= link_to "designate Worker", "#designate", class: "button", data: { designate_worker: "" } %>
      <div id="workers-modal", class="modal--worker hidden">
        <% @account.account_workers.each do |worker| %>
            <ul>
              <li><%= link_to worker.name, designate_account_assignment_path(assignment, user_id: worker.id) %></li>
            </ul>
        <% end %>
      </div>
    </ul>
  <% end %>
</div>

Как вы можете видеть, я повторяю все назначения на текущем счете. Затем я перебираю всех пользователей текущего аккаунта. Затем я пытаюсь выбрать конкретное назначение по идентификатору и пользователя по идентификатору и создать связь между ними, но из пользовательского интерфейса я не могу выбрать ни assignmentодного, кроме первого. Я думаю, что это как-то связано с тем, как я повторяю, но я не знаю точно.

Контроллер:

  def designate
    designated_user = current_account.users.find_by(id: params[:user_id])
    membership = designated_user.assignment_relationships.find_or_create_by(assignment_id: params[:id])

    membership.update!(designated: true)
    flash[:notice] = "Successfully designated the user"
    redirect_to root_path
  end

Как видите. Вторая строка в методе ищет assignment_id с params [: id]. Прямо сейчас он приходит только как: id = > «1», Когда я пытаюсь получить: id = > > » 2 » или » 4″

Дайте мне знать, если вам нужно увидеть какой-либо другой код. Спасибо!

1 ответ

  1. Вы действительно хотите, чтобы начать новый список для каждого назначения и каждого работника. При просмотре представления отображаются ли назначения с разными идентификаторами? Попробуйте изменить представление так, чтобы неупорядоченные теги списка находились вне каждого цикла:

    <div class="assignments">
      <ul>
        <% @assignments.each do |assignment| %>
          <li><%= link_to assignment.name, account_assignment_path(assignment) %></li>
          <%= link_to "designate Worker", "#designate", class: "button", data: { designate_worker: "" } %>
          <div id="workers-modal", class="modal--worker hidden">
            <ul>
              <% @account.account_workers.each do |worker| %>       
                <li><%= link_to worker.name, designate_account_assignment_path(assignment, user_id: worker.id) %></li>       
              <% end %>
            </ul>
          </div> 
        <% end %>
      </ul>
    </div>