嵌套模型表单

时间:2011-08-09 04:44:29

标签: ruby-on-rails ruby-on-rails-3

我正在尝试设置一个简单的嵌套模型表单,但在尝试通过“新”操作显示表单时收到错误。这是我的设置:

class Account < ActiveRecord::Base
    has_many :people
    has_many :organizations

    accepts_nested_attributes_for :organizations
end

class Organization < ActiveRecord::Base
    belongs_to :account

    has_many :locations

    accepts_nested_attributes_for :people
    accepts_nested_attributes_for :addresses
end

class AccountsController < ApplicationController

    def new
        @account = Account.new
        @account.organizations.build
    end

    def create
        @account = Account.new(params[:account])
        if @account.save
            #handle success
        else
            render 'new'
        end
    end

end

<%= form_for(@account) do |f| %>

<%= f.label :type %><br />
<%= f.text_field :type %><br />

    <%= f.fields_for :organization do |organization_fields| %>
        <%= organization_fields.label :name %><br />
        <%= organization_fields.text_field :name %><br />
        <%= organization_fields.label :website %><br />
        <%= organization_fields.text_field :website %><br />
    <% end %>

<%= f.submit "Add account" %>
<% end %>

当尝试点击/ accounts / new中的“新”操作时,我收到以下错误:

未初始化的常量帐户::组织

应用程序跟踪: app / controllers / accounts_controller.rb:5:在'new'

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这似乎是一个奇怪的加载顺序问题。你是否正在使用config.load_paths或其他类似的东西做任何聪明的事情?

只是为了查看它是否有效,请尝试在account.rb顶部的require File.join(Rails.root, 'app/models/organization.rb')。这不是你想要保留的解决方案,但如果它适用于该行,那么你就会知道问题在于加载器。