Я пытался следовать этому совету , но мне пока не удалось создать форму, содержащую 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