2012-01-04 2 views
3

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

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

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

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

+0

Это может быть относительно сложная вещь, чтобы преуспеть; Я рекомендую вам проверить три части RailsCast, начиная с [Complex Forms Part1] (http://railscasts.com/episodes/73-complex-forms-part-1). –

ответ

1

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

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

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

params[:users].each do |user| 
    User.create!(user) 
end 
1

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

Для правильной формы (для одного объекта) поля названы как:

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

, а затем PARAMS [: человек] содержит, что данные (PARAMS [: человек] [: first_name] и т.д.)

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

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

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

так что в контроллере вы будете проходить через эти записи и создавать новое лицо объекты от каждого и сохранить их.