2010-05-21 9 views
2

J'essaie de mettre en place une relation many to many en utilisant la méthode has_many: through, puis d'utiliser un champ multi-sélection pour configurer les relations. Je suis ce tutoriel:has_many: via le champ multi-sélection formtastic

http://asciicasts.com/episodes/185-formtastic-part-2

Cependant, pour une raison quelconque, le formulaire affiche un numéro hexadécimal étrange et il change à chaque actualisation de la page, je ne sais pas exactement ce que je fais mal. Ci-dessous, mon code modèle/vue.

company.rb

has_many :classifications 
has_many :sics, :through => :classifications 

sic.rb

has_many :classifications 
has_many :companies, :through => :classifications 

classification.rb

belongs_to :company 
belongs_to :sic 

_form.html.erb

<% semantic_form_for @company do |f| %> 
    <% f.inputs do %> 
    <%= f.input :company %> 
    <%= f.input :sics %> 
    <% end %> 
    <%= f.buttons %> 
<% end %> 

Ici aussi, le formulaire semble montrer le bon nombre d'entrées pour le champ, mais il ne montre clairement pas le nom correct de la relation.

SIC Multi-Select http://web9.twitpic.com/img/103694166-98ad71116216d3d1b12dd77690b36248.4bf6ca20-full.jpg

Répondre

6

Ce que vous voyez dans la méthode to_s d'un objet ActiveRecord::Base. Le numéro hexadécimal est l'emplacement mémoire qui serait différent à chaque requête. Après avoir parcouru le code Formastic, il recherche des méthodes dans une liste prédéfinie pour trouver le texte à afficher.

Assurez-vous que votre modèle Sic a un champ (ou une méthode) dans cette liste to_label, display_name, full_name, name, title, username, login, value, to_s qui renvoie le texte que vous voulez.

+0

Vous êtes brillant qui a parfaitement fonctionné juste ajouté un champ appelé nom et il se montre très bien maintenant. Merci. –