使用Rails从一个表单提交多个模型对象

时间:2011-10-06 16:30:59

标签: ruby-on-rails forms model

我尝试过关注this advice,但我还没有成功在一个提交按钮下生成包含3个相同类型对象的表单。

当我导航到一个页面时,该页面应该显示一个包含3个对象(在本例中称为元素)的字段的表单,我收到以下错误: undefined method 'elements' for nil:NilClass
任何指针将非常感谢!我的代码如下:

应用/控制器/ elements_controller.rb

class ElementsController < ApplicationController
  def index
    @element_group = ElementGroup.new
    render 'pages/index'
  end
end

应用/视图/页/ home.html.erb

<%= render 'element_groups/form'%>

应用/视图/ element_groups / _form.html.erb

<% form_for :element_group do |f|%>
  ## The error comes from this next line, as f.object is nil
  <% f.object.elements.each do |element| %>
    <% f.fields_for element do |element_form| %>
      <%= element_form.text_field :content %>
      <%= element_form.text_field :element_type %>
      <%= element_form.text_field :subtype %>
    <% end %>
  <% end %>
<% end %>

应用/模型/ element_group.rb

class ElementGroup
  attr_accessor :elements

  def elements
    @elements = []
    3.times do
      @elements << Element.new
    end
    @elements
  end
end

应用/模型/ element.rb

class Element < ActiveRecord::Base
  attr_accessible :element_type, :subtype, :content
end

分贝/ schema.rb

  create_table "elements", :force => true do |t|
    t.string   "element_type"
    t.string   "subtype"
    t.string   "content"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

1 个答案:

答案 0 :(得分:0)

您是否尝试过更改为<% form_for @element_group do |f|%>