Rails 3.如何在一个页面中创建多个新资源?

时间:2012-01-04 17:50:11

标签: ruby-on-rails ruby forms

我知道如何使用嵌套属性(http://railscasts.com/episodes/196-nested-model-form-part-1?autoplay=true),但现在我试图在没有嵌套的情况下做到这一点属性。

我想有一张类似这样的桌子......

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

所以它是一张桌子,每个单元格内都有一个字段。如果您向表中添加三个人然后点击保存,则会有3个人保存到数据库。

2 个答案:

答案 0 :(得分: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 :(得分:1)

您需要在提交的参数中设置一组人员:

对于常规表单(对于单个实体),字段的名称如下:

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]等)

然后在控制器中,您将迭代这些记录并从每个记录创建新的Person对象并保存它们。

相关问题