Bonjour,
J'ai créé le Model suivant :
depart et arrivee sont des villes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class CreateVilles < ActiveRecord::Migration def self.up create_table :villes do |t| t.string :nom t.references :Etat t.timestamps end end class CreateLignes < ActiveRecord::Migration def self.up create_table :lignes do |t| t.references :depart t.references :arrivee t.integer :distance t.datetime :heure_depart t.integer :taxes_ligne t.timestamps end end
j'ai donc mis ceci dans le contrôleur :
lors de la création, tout "semble" bien se passer mais lorsque j'essaie d'afficher (donc le index.erb.html ou le show.erb.html), j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Ville < ActiveRecord::Base has_many :Lignes belongs_to :Etat end class Ligne < ActiveRecord::Base belongs_to :depart, :class_name => 'Ville', :foreign_key => 'depart_id' belongs_to :arrivee, :class_name => 'Ville', :foreign_key => 'arrivee_id' has_many :Vols end
Sachant que le code <%=h Ligne.find(@ligne.depart_id).nom %> marche bien dans les cas ou j'ai une relation avec une seul références. Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 ActiveRecord::RecordNotFound in Lignes#show Showing lignes/show.html.erb where line #4 raised: Couldn't find Ligne without an ID Extracted source (around line #4): 1: <p> 2: <b>Depart:</b> 3: <%=h Ligne.find(@ligne.depart_id).nom %> 4: </p> 5: 6: <p> 7: <b>Arrivee:</b> RAILS_ROOT: C:/Documents and Settings/Sylvain Desbureaux/Mes documents/NetBeansProjects/SeventyPlanesCalculator Application Trace C:/Program Files/NetBeans 6.1/ruby1/jruby-1.0.3/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:1248:in `find_from_ids' C:/Program Files/NetBeans 6.1/ruby1/jruby-1.0.3/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/base.rb:504:in `find' app/views/lignes/show.html.erb:4:in `_run_erb_47app47views47lignes47show46html46erb' app/controllers/lignes_controller.rb:20:in `show' ... Request Parameters: {"id"=>"2"}
D'ailleurs, je trouve pas ça très propre dons si il ya une manière "classe" de le faire... (j'ai essayé ville.Etat.nom mais ça marche pas)
Code : Sélectionner tout - Visualiser dans une fenêtre à part <td><%=h Etat.find(ville.etat_id).nom %></td>
Partager