2010-06-15 8 views
1

Je suis un Rails noob et j'ai une question. J'ai un agrégateur de flux qui est organisé par ce concept général:belongs_to avec plusieurs modèles

Flux (livres, électronique, etc.) Section des aliments du site (page d'accueil, page de livres, etc.) alimentation (l'alimentation lui-même) RSS Entrée

Alors:

class Category < ActiveRecord::Base 
    has_many :feeds 
    has_many :feed_entries, :through => :feeds, :limit => 5 
    validates_presence_of :name 
    attr_accessible :name, :id 
end 

class Section < ActiveRecord::Base 
    has_many :feeds 
    has_many :feed_entries, :through => :feeds, :limit => 5 
    attr_accessible :name, :id 
end 

class Feed < ActiveRecord::Base 
    belongs_to :categories 
    belongs_to :sections 
    has_many :feed_entries 
    validates_presence_of :name, :feed_url 
    attr_accessible :name, :feed_url, :category_id, :section_id 
end 

class FeedEntry < ActiveRecord::Base 
    belongs_to :feed 
    belongs_to :category 
    belongs_to :section 
    validates_presence_of :title, :url 
end 

sens? Maintenant, dans ma page d'index, je veux dire essentiellement ... Si vous êtes dans les livres de catégorie, dans la section Page d'accueil, donnez-moi les entrées de flux regroupées par Feed ...

Dans mon contrôleur:

def index 
    @section = Section.find_by_name("Home Page") 
    @books = Category.find_by_name("Books") 
end 

à mon avis:

<%= render :partial => 'feed_list', 
      :locals => {:feed_group => @books.feeds} 
-%> 

Cette partie va cracher le balisage pour chaque entrée d'alimentation dans la collection @books des aliments du bétail. Maintenant, ce que je dois faire est de combiner une certaine façon les @books avec le @section ...

J'ai essayé ceci:

<%= render :partial => 'feed_list', 
      :locals => {:feed_group => @books.feeds(:section_id => @section.id)} 
-%> 

Mais il ne limite pas par l'ID de section. J'ai confirmé l'ID de section en utilisant le même code dans la console ...

Avez-vous du sens? Aucun conseil?

Merci!

+0

Je vais avoir du mal à suivre. Quelle est la différence entre Catégorie et Section? J'ajouterais juste une recherche dans le contrôleur comme @feeds = Feed.find: all,: conditions => ["section_id =? Et category_id =?", @ Section.id, @ page.id] 'fais ce que tu es à la recherche de? – Awgy

Répondre

0

Essayez quelque chose comme ceci:

:locals => {:feed_group => @books.feeds.all(:conditions => {:section_id => @section.id})} 
+0

De sa description, cela semble fonctionner. Il est incorrect d'avoir cette logique dans la vue lorsque vous avez toutes les informations requises dans le contrôleur, il est donc préférable de créer @feeds en premier. – Awgy

+0

D'accord. Bonne prise. – Jarrod

+0

Ahoy! Merci - a parfaitement fonctionné. – panzhuli

Questions connexes