Rails 3. Как создать более одного нового ресурса на одной странице? - PullRequest
3 голосов
/ 04 января 2012

Я знаю, как сделать это с вложенными атрибутами (http://railscasts.com/episodes/196-nested-model-form-part-1?autoplay=true), но сейчас я пытаюсь сделать это без вложенных атрибутов.

Я хотел бы иметь таблицу с чем-то вроде этого ...

first_name last_name phone
|        |          |     |
|        |          |     |
|        |          |     |
save

Итак, это таблица, и внутри каждой ячейки есть поле. Если вы добавите в таблицу трех человек, а затем нажмете «Сохранить», в базу данных сохранятся 3 человека.

Ответы [ 2 ]

1 голос
/ 04 января 2012

Вам необходимо настроить массив людей в представленных параметрах:

Для обычной формы (для отдельной сущности) поля имеют имена, такие как:

person[first_name]
person[last_name]
person[phone]

изатем params [: person] содержит эти данные (params [: person] [: first_name] и т. д.)

, но вам нужно несколько человек.Вы указываете это, добавляя «[]» к именам параметров, например:

people[][first_name]
people[][last_name]
people[][phone]
people[][first_name]
people[][last_name]
people[][phone]

... и когда это будет отправлено, оно будет интерпретировано как серия личных записей.Это будет отображаться в params [: people] как массив персон (params [: people] [0] [: first_name] и т. Д.)

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

1 голос
/ 04 января 2012

Возможно, это не лучшее решение, но вы можете сделать что-то вроде

- 5.times do 
  = fields_for 'users[]' do |f|
    = f.text_field :first_name

, а затем params[:users] будет содержать массив. Действие контроллера будет выглядеть примерно так:

params[:users].each do |user|
  User.create!(user)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...