Question

J'ai trois modèles que je veux interagir les uns avec les autres.

Kase, personne et et Société.

Je (je pense) configurer les relations correctement:

class Kase < ActiveRecord::Base
#HAS ONE COMPANY
has_one :company

#HAS MANY PERSONS
has_many :persons


class Person < ActiveRecord::Base
belongs_to :company

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

J'ai mis le champ de sélection sur la nouvelle vue de créer Kase, et créer un nouveau point de vue de la personne comme suit:

<li>Company<span><%= f.select :company_id, Company.all %> </span></li>

Tous les ci-dessus montre avec succès un menu déroulant dynamique peuplé avec les noms de sociétés au sein des entreprises.

Ce que je suis en train de faire est d'afficher le contact de l'enregistrement de l'entreprise au sein de la Kase et par personne show.html.erb.

Par exemple, si j'ai une société appelée « Acme, Inc. » et créer un nouveau Kase appelé « Cas aléatoire » et choisissez dans le créer une nouvelle page de cas « Acme, Inc. » des entreprises menu déroulant. Je voudrais alors afficher "Acme, Inc" et "Acme, Inc. Mobile", etc. sur la show.html.erb "Cas aléatoire".

J'espère que cela a un sens à quelqu'un!

Merci,

Danny

EDIT: kases_controller

def show
@kase = Kase.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @kase }
  format.pdf { render :layout => false }

  prawnto :prawn => { 
             :background => "#{RAILS_ROOT}/public/images/jobsheet.png",

             :left_margin => 0, 
             :right_margin => 0, 
             :top_margin => 0, 
             :bottom_margin => 0, 
             :page_size => 'A4' }
end   end
Était-ce utile?

La solution

Je pense que les associations de modèle sont incomplètes basées sur ce que vous avez posté votre question:

class Kase < ActiveRecord::Base
  has_one :company
  has_many :people # Rails should handle the correct plural here
end

class Company < ActiveRecord::Base
  has_many :people
  belongs_to :kase
end

class Person < ActiveRecord::Base
  belongs_to :company
  belongs_to :kase
end

Avec les assocations mis en place correctement, vous pouvez alors accéder aux attributs d'une entreprise pour un cas donné:

kase.company.name
kase.company.mobile

-ou pour une personne donnée:

person.company.name
person.company.mobile

Vous pouvez même obtenir à la société par le cas d'une personne:

person.kase.company.name # etc...

Autres conseils

Si je comprends bien, votre fichier show contiendrait quelque chose comme ceci pour afficher le numéro mobile:

# in app/views/kases/show.html.erb
<h1><%=h kase.name %></h1>

<h2>Company Information</h2>
<ul>
  <li>Company Name: <%=h kase.company.name %></li>
  <li>Company Mobile: <%=h kase.company.mobile_phone %></li>
</ul>

Donnez-lui un aller, si c'est tout ce qu'il faut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top