2010-10-27 37 views
3

J'ai essayé de comprendre celui-ci pendant un certain temps, mais toujours pas de chance. J'ai une table company_relationships qui joint Entreprises et Personnes, en stockant un champ supplémentaire pour décrire la nature de la relation appelée 'corp_credit_id'. Je peux obtenir les formulaires qui fonctionnent bien pour ajouter company_relationships pour une personne, mais je n'arrive pas à comprendre comment définir ce champ modificateur lorsque je le fais. Des idées?Affectation d'un attribut imbriqué avec Formtastic

En savoir plus sur mon projet: Les gens ont de nombreuses entreprises à travers company_relationships. Avec ce champ supplémentaire, je l'utilise pour regrouper toutes les relations spécifiques. Donc, je peux groupe de Médecins d'une personne, entrepreneurs, etc.

Mes modèles:

Company.rb (abrégé)

class Company < ActiveRecord::Base 
    include ApplicationHelper 

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

Person.rb (abrégé)

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 

Mon formulaire partiel, en utilisant 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 %> 

Donc ce que je voudrais faire est quelque chose comme: corp_credit_id => « 1 » dans cette entrée pour attribuer cet attribut Coffee Shop. Mais formtastic ne semble pas permettre cette affectation.

Des idées sur comment faire cela?

+0

Voulez-vous dire de dire que lorsque vous créez une entreprise qui est un magasin de café, la colonne 'corp_credit_id' dans la jointure table doit être définie sur '1'? – zetetic

+0

Non, j'ai des booléens dans le modèle de l'entreprise pour déterminer s'il s'agit en fait d'un café. Ce que j'essaie de faire est de définir corp_credit_id lors de la mise à jour d'une personne, afin que je puisse assigner tous leurs Coffee Shops. –

Répondre

1

Vous cherchez quelque chose comme

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

Il est dans le documentation

+0

J'ai essayé cette approche et j'en ai fini avec l'affichage de plusieurs cases à cocher, selon le nombre de relations d'entreprise existantes. Ce que je voudrais faire est d'avoir une case à cocher ou une boîte de sélection qui permet plusieurs sélections. Lors de la soumission, il convient de mettre à jour company_relationships et de stocker un "1" dans le champ corp_credit_id dans le cas des coffee shops. (autres chiffres pour d'autres types de relations). –