我知道如何使用嵌套属性(http://railscasts.com/episodes/196-nested-model-form-part-1?autoplay=true),但现在我试图在没有嵌套的情况下做到这一点属性。
我想有一张类似这样的桌子......
first_name last_name phone
| | | |
| | | |
| | | |
save
所以它是一张桌子,每个单元格内都有一个字段。如果您向表中添加三个人然后点击保存,则会有3个人保存到数据库。
答案 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对象并保存它们。