0

我正在为一家公司添加一个子公司。所以我会去公司,然后从列表中选择 1 个或多个子公司并保存。因此,我不是将公司保存到子公司(如下所示),而是将子公司添加到公司,

那么下面的这个例子对我来说毫无意义!我的意思是如何将子公司保存到公司?

class Company < ActiveRecord::Base
    validates   :name, presence: true
    has_many :subsidiaries, :class_name => "Company", :foreign_key => "parent_company_id"
    belongs_to :parent_company, :class_name => "Company",
end 

您能否告诉我保存在我的控制器中的外观,因为我确定这是我出错的地方。

目前我的问题是我保存我保存应该是附属的方式作为parent_id,所以基本上它是相反的:

在这里,我从列表中选择一个子公司:

<%= f.collection_select(:parent_company_id, @companies, :id, :name, :include_blank => true, :multiple => true) %>

只是为了清楚目前发生了什么:

  1. 我开公司A
  2. 我选择B公司作为子公司并保存
  3. 我查看公司,发现 B 有一个子公司 A(错误!!),这是有道理的,因为它的 parent_id 设置为 A,但实际上我需要设置它的“subsidiary_id”
4

1 回答 1

0

这样做的典型方法:

<p>Parent Company</p>
<%= f.collection_select :parent_company_id, ... %>

您可以查看所有子公司记录并设置其母公司。之后,你看看@parent.subsidiaries你的清单。

如果您想从母公司的表格中完成这一切,您将不得不使用 javascript 和fields_forand做一些诡计accepts_nested_attributes_for,或者可能使用一堆复选框 - 实际更改的记录是记录,而不是父记录.

观看此 railscast可能会有所帮助。

于 2013-07-19T05:31:30.643 回答