2009-10-24 7 views
0

J'ai des problèmes avec la théorie.structure de la catégorie

J'ai un modèle appelé Promos, et j'ai aussi un modèle appelé Catégories.

Je souhaite que l'administrateur puisse créer des catégories à partir desquelles les utilisateurs sélectionneront dans une liste déroulante pour attribuer la promotion. Donc, les promotions appartiendront à une catégorie, mais l'affectation doit se produire dans le créer.

Quelle est la structure recommandée?

Répondre

0

Pour faire en sorte que chaque Promo a une Catégorie:

class Category < ActiveRecord::Base 
    has_many :promos 
end 

class Promo < ActiveRecord::Base 
    belongs_to :category 

    validates_association_of :category 
end 

Comment définir la catégorie au moment de la création Promo

promo = Promo.new(:category => @category) 

En ce qui concerne les formes aller:

<% form_for :promo do |f| %> 
    <%= f.collection_select :category_id, Category.all, :id, :name, :prompt => "Choose a category" %> 
    ... 
    Other promo fields 
    ... 
<% end %> 

code du contrôleur assorti:

class PromosController < ActionController 
    def create 
    @promo = Promo.create(params[:promo]) 
    ... 
     redirect or render whether @promo was successfully created 
    ... 
    end 
end 
+0

erreur sur la promo nouvelle constante pour les catégories non initialisée sur cette ligne: <% = f.collection_select: category_id, categories.All,: id, nom,: prompt => "Choisissez une catégorie" %> J'ai défini des catégories comme ceci dans create: @categories = Category.find (: all) –

+0

Vous avez absolument raison. Il devrait être Category.all, pas Categories.all. Cela sonne juste quand vous le pensez, mais le nom du modèle est toujours singulier. – EmFi

0

Un utilisateur a beaucoup de promos, qui appartient à une catégorie. Une catégorie a beaucoup de photos.

Tels que:

class User < Activerecord::Base 
    has_many :promos 

class Promo < Activerecord::Base 
    belongs_to :user 
    belongs_to :category 

class Category < Activerecord::Base 
    has_many :promos 
+0

. Vous devez associer Category à User ou ajouter 'attr_accessor: user' à Category pour permettre au contrôleur de transmettre un utilisateur à une catégorie. Ce qui peut être utilisé dans le test avant de créer. Lequel, comme vous l'avez écrit, a trop de problèmes à corriger à partir d'un commentaire. Obtenir – EmFi

Questions connexes