2010-05-21 4 views
0

J'ai un modèle d'entreprise et un modèle de personne avec les relations suivantes:Rails lien d'un modèle à un autre basé sur le champ db?

class Company < ActiveRecord::Base 
    has_many :kases 
    has_many :people 
    def to_s; companyname; end 
end 

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

Dans l'action create pour la personne, j'ai une boîte de sélection avec une liste des entreprises qui attribue ce une company_id à cette personne enregistrement:

<%= f.select :company_id, Company.all.collect {|m| [m.companyname, m.id]} %> 

Dans la vue du spectacle pour la personne que je peux donner le nom de la société comme suit:

<%=h @person.company.companyname %> 

Ce que je suis essayer de travailler, est-ce que je fais un lien vers le dossier de l'entreprise?

J'ai essayé:

<%= link_to @person.company.companyname %> 

mais juste sort le nom de l'entreprise dans une balise href, mais des liens vers la page en cours.

Merci,

Danny

Répondre

2

Vous devez passer deuxième argument le chemin où vous voulez aller

<%= link_to @person.company.companyname, @person.company %> 

ou avec la version complète:

<%= link_to @person.company.companyname, company_url(@person.company) %> 
+0

Génial, je savais qu'il me manquait quelque chose. Merci! – dannymcc

1

La chose est, link_to ne peut pas deviner où vous voulez qu'il conduit, si vous lui donnez seulement le texte du lien :)

Afin d'avoir la tête de lien vers la page de l'entreprise, vous devez ajouter un chemin:

<%= link_to @person.company.companyname, company_path(@person.company) %> 

Cela suppose que vous avez des itinéraires appropriés reposants pour votre entrepriseLa page vers laquelle vous vous dirigez est companies/show.html.erb.

+0

Merci pour votre réponse en profondeur, je suis parvenu à obtenir ce travail . – dannymcc

Questions connexes