2010-10-27 75 views
3

我一直试图找出这一个一段时间,但仍然没有运气。我有一个company_relationships表,加入公司,存储一个额外的字段来描述关系的性质,称为'corp_credit_id'。我可以使表格正常工作,为一个人添加company_relationships,但我似乎无法弄清楚如何设置该修饰符字段。有任何想法吗?用Formtastic指定一个嵌套属性

更多关于我的项目:人们有很多公司通过company_relationships。有了这个额外的领域,我使用它来将所有特定的关系组合在一起。这样我就可以组一个人的医生,承包商等

我的模型:

Company.rb(有删节)

class Company < ActiveRecord::Base 
    include ApplicationHelper 

has_many :company_relationships 
has_many :people, :through => :company_relationships 

Person.rb(有删节)

class Person < ActiveRecord::Base 
include ApplicationHelper 

has_many :company_relationships 
has_many :companies, :through => :company_relationships 

accepts_nested_attributes_for :company_relationships 

company_relationship.rb

class CompanyRelationship < ActiveRecord::Base 
attr_accessible :company_id, :person_id, :corp_credits_id 
belongs_to :company 
belongs_to :person 
belongs_to :corp_credits 

end 

我的表单部分,使用formtastic。

<% semantic_form_for @person do |f| %> 
<%= f.error_messages %> 
<% f.inputs do %> 
... 
<%= f.input :companies, :as => :check_boxes, :label => "Favorite Coffee Shops", :label_method => :name, :collection => Company.find(:all, :conditions => {:coffee_shop => 't'}, :order => "name ASC"), :required => false %> 

所以我想要做的是类似于:corp_credit_id =>'1'在该输入中为咖啡店分配该属性。但是,formtastic似乎并不允许这项任务发生。

有关如何做到这一点的任何想法?

+0

你的意思是说,当你创建一个公司,是一间咖啡厅,在'corp_credit_id'柱联接表应该设置为'1'? – zetetic 2010-10-27 00:34:58

+0

不,我其实在公司模型中有布尔值来确定它是否实际上是咖啡店。我想要做的是在更新人员时设置corp_credit_id,以便我可以分配他们所有的咖啡店。 – 2010-10-27 00:36:58

回答

1

你在寻找类似

<% semantic_form_for @person do |form| %> 
    <% form.semantic_fields_for :company_relationships do |cr_f| %> 
    <%= cr_f.input :corp_credit_id %> 
<% end %> 

它是documentation

+0

我已经尝试过这种方法,并最终显示它显示几个check_boxes,取决于有多少现有的公司关系。我想要做的是有一个checkbox或选择框,允许多个选择。提交时,应更新company_relationships并在咖啡店的corp_credit_id字段中存储“1”。 (其他类型关系的其他数字)。 – 2010-10-27 20:37:45