代码之家  ›  专栏  ›  技术社区  ›  Adam Lassek

无方法错误,带集合\选择

  •  0
  • Adam Lassek  · 技术社区  · 15 年前

    我正在为一个 :has_many :through 关系:

    class Account < ActiveRecord::Base
      has_many :employments
      has_many :people, :through => :employments
      accepts_nested_attributes_for :employments
    end
    
    class Person < ActiveRecord::Base
      has_many :employments
      has_many :accounts, :through => :employments
    end
    
    class Employment < ActiveRecord::Base
      belongs_to :account
      belongs_to :person
    end
    

    这个 Employment 模型包含字段 :account_id :person_id .

    在帐户表单中,我添加了:

    <% fields_for 'account[employments_attributes][]', @account.employments do |e| %>
      <%= e.hidden_field :account_id, :value => @account.id %>
      <%= e.collection_select :person_id, Person.all, :id, :name %>
    <% end %>
    

    collection_select select 此外,在任何排列中,我给他们一个失败的命名错误例外:

    undefined method `person_id' for #<Array:0x82e7db0>
    

    就好像 person_id 字段不存在,但我可以使用 会计人员 :个人ID 非常好。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Adam Lassek    15 年前

    回答我自己的问题。当我在训练我的大脑思考铁轨的方式时,我遇到了这样的情况,我只是在错误地思考问题。

    forms_for 需要对已从控制器实例化的对象执行操作。而不是这是一种 创造 就业对象,它在一个空的字段中填充。因此,我需要在 edit 行动:

    @account.employments.build
    

    用适当的逻辑封装,这样它只在我需要的时候被创建。