Rails: добавить значение в collection_select из другой модели - PullRequest
0 голосов
/ 14 января 2019

Мне нужно иметь возможность добавить новое значение в мой collection_select, если доступные параметры не включают это значение, однако, это значение должно быть новой записью, созданной в другой модели.

У меня есть модель задач, в которой можно создавать новые задачи, для каждой из которых есть человек, ответственный за выполнение задачи:

    class Task < ApplicationRecord
      belongs_to :project
      belongs_to :person
      belongs_to :user
    end

Модель Person выглядит следующим образом:

      class Person < ApplicationRecord
        belongs_to :company
        has_many :tasks
        belongs_to :user
      end

В моем представлении задач у меня есть код для выбора человека, ответственного за задачу, с использованием collection_select:

    <%= f.collection_select :person_id , current_user.people.order(:last_name), :id, :last_name, {prompt: "Select a person"}, {class: "form-control"} %>

Допустим, в моем collection_select у меня есть 1) Джон и 2) Питер, но мне нужно назначить задачу для Джейн, в данный момент мне нужно покинуть форму «Задача» и перейти к форме «Персона», добавить Джейн как новую человек, а затем вернуться и создать новую запись задачи.

То, что я хочу сделать, облегчает использование. Я надеюсь, что смогу добавить опцию в раскрывающемся списке collection_select (например, «Добавить нового человека»), которая при выборе использует некоторый AJAX или другую магию, чтобы перенести меня прямо в форму нового человека (в виде всплывающего экрана или вложенной формы) и как только я добавляю Джейн в качестве новой записи, она возвращается к форме задачи.

Возможно ли это?

...