J'ai créé une petite application clone twitter où les utilisateurs font des messages, suivent d'autres utilisateurs, et ont un flux de tous les messages par l'utilisateur qu'ils suivent. J'ai ajouté un choix de catégories pour les messages à tomber, "thriller" "western" "horreur" et ainsi de suite.Rails 3: rails newbie confus au sujet des routes/contrôleurs
Lorsqu'un utilisateur est connecté, l'adresse Web racine est son tableau de bord.
routes.rb
root :to => "pages#home"
et pages # accueil est l'endroit où l'alimentation de l'utilisateur se trouve: @feed_items = current_user.feed
PagesController
def home
@title = "Home"
@featured_posts = Post.featured.limit(10)
if user_signed_in?
@user = current_user
@post = current_user.posts.build
@feed_items = current_user.feed.paginate(:per_page => "10", :page => params[:page])
end
end
Maintenant, j'ai compris comment analyser le flux et extraire un sous-ensemble d'alimentation qui contient seulement les messages avec category_id « 2 » (aussi connue comme « thriller »)
@thriller_feed_items= current_user.feed.where(:category_id => '2')
Lorsqu'un utilisateur connecté va au root_path ils voient leur tableau de bord et l'alimentation entier. Je voudrais qu'il y ait un lien qui dit «thrillers» qui va changer les @feed_items actuels dans les @thriller_feed_items mais je suis confus sur la façon dont les routes et les vues fonctionneraient. Twitter utilise /! #/Mentions comme adresse pour les flux de sous-ensembles, dois-je faire la même chose? Comment pourrais-je mettre cela en place?
EDIT: pour montrer comment fonctionne ma méthode d'alimentation.
modèle utilisateur
def feed
Post.from_users_followed_by(self)
end
modèle post
def self.followed_by(user)
followed_ids = %(SELECT followed_id FROM relationships
WHERE follower_id = :user_id)
where("user_id IN (#{followed_ids}) OR user_id = :user_id", :user_id => user)
end
Salut, j'adore vraiment cette solution, mais comment est-ce que j'obtiendrais la route "/ category/thriller" ??? Merci encore –