【问题标题】:Submit multiple model objects from one form with Rails使用 Rails 从一个表单提交多个模型对象
【发布时间】:2011-10-06 16:30:58
【问题描述】:

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

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

app/controllers/elements_controller.rb

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

app/views/pages/home.html.erb

<%= render 'element_groups/form'%>

app/views/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 %>

app/models/element_group.rb

class ElementGroup
  attr_accessor :elements

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

app/models/element.rb

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

db/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

【问题讨论】:

    标签: ruby-on-rails forms model


    【解决方案1】:

    你试过换成&lt;% form_for @element_group do |f|%&gt;吗?

    【讨论】:

    • 是的。然后我得到undefined method 'model_name' for NilClass:Class(源自 element_groups/_form.html.erb 的第 1 行)我相信这是由于 element_group.rb 模型中的 ElementGroup 类没有从 ActiveRecord::Base 继承,但我只想创建一个“fascade " 模型,这只是用于处理一组其他模型为this answer mentioned。你认为这可能吗?
    • 这是真的我没有注意到你没有从ActiveRecord::Base继承。你指的答案是垃圾。最简单的方法是关注this railscast。希望我能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2017-08-14
    相关资源
    最近更新 更多