Bonjour,
J’ai créé le Model suivant :
Code :
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
depart et arrivee sont des villes.
j’ai donc mis ceci dans le contrôleur :
Code :
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
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 :
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:
2: Depart:
3: <%=h Ligne.find(@ligne.depart_id).nom %>
4:
5:
6:
7: Arrivee:
RAILS_ROOT: C:/Documents and Settings/Sylvain D./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”}
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 :
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)
Merci d’avance