Как создать несколько записей одновременно с ActiveScaffold в ROR - PullRequest
4 голосов
/ 13 сентября 2008

Я хочу использовать ActiveScaffold для создания задания записей для нескольких студентов за один шаг. Все записи будут содержать идентичные данные, за исключением student_id.

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

Может ли кто-нибудь предложить хороший способ сделать это так, чтобы не требовалось, чтобы я расшифровал и переписал слишком много базового кода ActiveScaffold?


Обновление: я до сих пор не нашел хорошего ответа на эту проблему.

Ответы [ 3 ]

1 голос
/ 17 ноября 2008

Полагаю, вы определили свой блок множественного выбора, добавив: множественный => true к html-параметрам select_tag. Затем в контроллере вам нужно получить доступ к списку выбранных имен, что вы можете сделать следующим образом:

params[:students].collect{|student| insert_student(student, params[:assignment_id]) }

Применяя метод collect к массиву или перечислению, вы можете циклически проходить по каждому элементу этого массива, а затем делать то, что вам нужно, с каждым студентом (в примере вызывать функцию для вставки студентов). Collect возвращает массив с результатами выполнения кода внутри.

0 голосов
/ 15 сентября 2008

Меня сослали на BatchCreate , расширение ActiveScaffold, которое выглядит так, как будто оно может сработать.

0 голосов
/ 13 сентября 2008

, если в ваших заданиях есть has_many :students или has_and_belongs_to_many :students, тогда вы можете изменить идентификатор поля множественного выбора на assignment_student_ids [], и он должен работать.

...