Has_many & belongs_to

Yop

En attendant de résoudre mon problème de RJS je vous soumet un autre
problème.
J’ai deux models FacCategory et Faq
Une Faq appartient une catégorie
et FacCategory peut avoir plusieur Faqs
J’ai donc mis ce ceci

class FaqCategory < ActiveRecord::Base
#une categories peut avoir plusieur question
has_many :faqs
#Vérifie que le champs libéllé n’est pas vide
validates_presence_of :libelle_fr
end

class Faq < ActiveRecord::Base

une question appartient à une catégorie catégories

belongs_to :faq_category, :class_name => “FaqCategory”, :foreign_key
=>
“category_id”
end

J’aimerais quand on déclenche l’action show du controlleur FaqCategories
la
vue affiche toutes les Faqs de cette catégories

#affiche toutes les qestions de la catégories
def show
@questions = FaqCategory.faqs.find params[:id]
end

mon shema
ActiveRecord::Schema.define(:version => 6) do

create_table “faq_categories”, :force => true do |t|
t.column “libelle_fr”, :string
t.column “est_valable”, :integer
end

create_table “faqs”, :force => true do |t|
t.column “category_id”, :integer
t.column “question_fr”, :string
t.column “reponse_fr”, :text
t.column “score”, :integer
t.column “est_visible”, :integer
end
end

Quand j’essayé de déclencher mon action show j’ai cette erreur

NoMethodError in Faq categoriesController#show undefined
method
`faqs’ for FaqCategory:Class

la méthode faqs n’existe pas. Je me suis trompée ou

Merci :slight_smile:

Salut Bolo,

[…]
create_table “faqs”, :force => true do |t|
t.column “category_id”, :integer
t.column “question_fr”, :string
t.column “reponse_fr”, :text
t.column “score”, :integer
t.column “est_visible”, :integer
end
end

Pourquoi ne pas suivre les conventions de nommage de Rails
jusqu’au bout ?
avec faq_category_id au lieu de category_id, tu as :

class Faq < ActiveRecord::Base
belongs_to :faq_category
end

gratuitement.

Quand j’essayé de déclencher mon action show j’ai cette erreur

NoMethodError in Faq categoriesController#show undefined method
`faqs’ for FaqCategory:Class

dans ton action show tu as écrit :

@questions = FaqCategory.faqs.find params[:id]

tu as le tiercé (l’Arc de Triomphe ?) dans le désordre !

@questions = FaqCategory.find(params[:id]).faqs

la méthode faqs n’existe pas. Je me suis trompée ou

faqs ne peut pas être une méthode de classe, c’est spécifique
à une instance. Une relecture du chapitre sur ActiveRecord
du livre AWDWR serait judicieux…

(et n’oublie pas que tu peux faire des tests unitaires ou
encore des petits tests via script/console)

 -- Jean-François.

gratuitement.
Parce que j’avais pas le choix, tu penses bien que je me serais pas
prise
la tete sinon

Merci pour la réponse