2010-10-27 2 views
3

Я пытался понять это, но все равно не повезло. У меня есть таблица company_relationships, которая объединяет . Компании и Люди, сохраняя дополнительное поле, чтобы описать характер отношений, называемый corp_credit_id. Я могу заставить формы работать нормально, чтобы добавить company_relationships для Person, но я не могу понять, как установить это поле модификатора при этом. Есть идеи?Назначение вложенного атрибута с помощью 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 

Моя форма частичная, с использованием формыtastic.

<% 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

+0

Нет, у меня на самом деле есть булевы в модели компании, чтобы определить, действительно ли это кафе. То, что я пытаюсь сделать, это установить corp_credit_id при обновлении Person, поэтому я могу назначить все их Coffee Shops. –

ответ

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, в зависимости от того, сколько существующих отношений с компанией существует. То, что я хотел бы сделать, - это один флажок check_box или select, который позволяет выбирать несколько вариантов. При отправке он должен обновить company_relationships и сохранить «1» в поле corp_credit_id в случае кофеен. (другие числа для других типов отношений). –

Смежные вопросы