【问题标题】: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 个人保存到数据库中。

【问题讨论】:

  • 这可能是一件相对复杂的事情要做好;我建议您查看以 Complex Forms Part1 开头的三部分 RailsCast。

标签: 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 对象并保存它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多