2010-10-17 19 views
0

Je développe un site de partage d'images simple pour former mon ruby-on-rails-fu. J'ai les ressources suivantes dans mon fichier config/routes.rb.Problème avec la même ressource, accessible via deux routes

resources :users do 
    resources :images 
end 

resources :images 

Voici le problème auquel je suis confronté: comment dois-je procéder pour implémenter des fonctionnalités telles que «dernières images» et «abonnements à vos images»? Avoir url des ressources de la vanille est ici est à quoi il ressemble maintenant:

/users/N/images # ImagesController#index action for listing all images for a user 
/images # ImagesController#index action for listing all possible images from all users. 

Comment iriez-vous sur la gestion de l'objet « parent » d'images lors de l'accès action index dans le contrôleur d'images? Est-ce que simple vérifier pour :user_id en params hash suffire? Y at-il des plugins dont je ne suis pas au courant (puisque je ne pouvais pas penser à une simple description de ce problème).

Répondre

1

J'attribuerais un à un autre contrôleur, de sorte que vous ne les mélangiez pas et ne vous induis pas en erreur.

resources :users do 
    resources :images, :controller => user_images 
end 

resources :images 

maintenant à user_images_controller, vous pouvez envisager d'obtenir l'objet utilisateur par before_filter (car il dépend d'un utilisateur donné: D)

UserImagesController 
    before_filter :get_user 

    def get_user 
    @user = User.find(params[:id]) 
    // You could also do error checking in before_filters 
    end