2010-08-07 4 views
1

J'ai une liste de sélection déroulante dans mon application Rails, sous la forme pour créer un nouvel enregistrement.Ajouter un complément d'information à Rails Sélectionner la liste?

<li>Surveyor Name<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => (@kase.surveyorperson_id rescue "")} %></span></li> 

Il en est ainsi l'utilisateur peut choisir parmi une liste de noms d'arpenteur lequel ils veulent associer à l'affaire qu'ils créent.

Ce que je voudrais faire est d'avoir le nom de l'entreprise de l'arpenteur en regard de leur nom entre parenthèses.

Au moment où le code ressemble à ceci:

<li>Appointed Company<span><%= f.select :appointedsurveyor_id, Company.all.collect {|m| [m.companyname, m.id]}, {:selected => (@kase.appointedsurveyor_id rescue "")} %></span></li> 
<li>Appointed Surveyor<span><%= f.select :surveyorperson_id, Person.all.collect { |x| [x.personname, x.id]}, {:selected => (@kase.surveyorperson_id rescue "")} %></span></li> 

Est-il possible d'avoir la compagnie qu'un expert travaille pour produire après leur nom?

Les associations sont les suivantes:

class Company < ActiveRecord::Base 
    has_many :kases 
    has_many :people 

class Person < ActiveRecord::Base 
    has_many :kases # foreign key in join table 
    belongs_to :company 

J'ai également changé à la sortie des documents de l'entreprise à leurs noms plutôt que leurs numéros d'identification.

def to_s; companyname; end 

Merci d'avance!

Merci,

Danny

Répondre

1

Vous pouvez ajouter une méthode à votre modèle de personne qui retourne une chaîne contenant les personnes nom et la société qu'il/elle travaille pour:

def name_and_company 
    return "#{name} [#{company.name}]" 
end 

Si vous ne voulez pas avoir cela dans votre modèle (parce que c'est le code lié à la vue), vous pouvez, au lieu de simplement appeler

x.personname 

dans l'appel Person.all.collect, vous pouvez utiliser quelque chose comme

"#{name} [#{company.name}]" 
+0

Une fois que je l'ai ajouté la name_and_company def, comment dois-je appeler cette méthode à partir du code de sélection dans la vue? – dannymcc

+0

au lieu d'appeler x.personname, vous appelez x.name_and_company – Calavera

Questions connexes