【问题标题】:Rails 3. How to create more than one new resource in one page?Rails 3. 如何在一个页面中创建多个新资源?
【发布时间】:2012-01-04 17:50:10
【问题描述】:
我知道如何使用嵌套属性 (http://railscasts.com/episodes/196-nested-model-form-part-1?autoplay=true) 但现在我正在尝试不使用嵌套属性属性。
我想要一张这样的桌子......
first_name last_name phone
| | | |
| | | |
| | | |
save
所以它是一个表格,每个单元格内都有一个字段。如果将三个人添加到表中,然后点击保存,则将有 3 个人保存到数据库中。
【问题讨论】:
标签:
ruby-on-rails
ruby
forms
【解决方案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
【解决方案2】:
您需要在提交的参数中设置一组人员:
对于常规表单(对于单个实体),字段命名如下:
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 对象并保存它们。