2017-10-16 2 views
0

Un utilisateur clique sur une balise comme example.com/pizza, et voit tous les messages avec l'étiquette de pizza dans le contrôleur posts. Je veux que les gens voient aussi tous les "alternposts" avec l'étiquette de pizza, mais dans un contrôleur différent.Rails même route entrante mais différentes actions du contrôleur?

Les chemins de rails génère une erreur indiquant qu'ils sont déjà utilisés. Quelle est la meilleure façon d'y parvenir?

routes.rb

# TAGS 
    get 'tags/:tag', to: 'posts#index', as: :tag 
    get 'tags/:tag', to: 'alternateposts#index', as: :tag 
+1

L'alias 'tag' est déjà utilisé, et l'URI 'tags /: tag' sera écrasé si vous le déclarez deux fois. Comment sont définis vos modèles et vos relations? Vos contrôleurs? améliorer la question en ajoutant plus de détails. –

Répondre

0

Vous ne pouvez pas déclarer itinéraires multiples avec la même URL. Dans votre cas, la seconde URL surchargera votre premier.

Vous devez déclarer une route unique avec un seul contrôleur et renvoyer les mêmes valeurs de posts et alternateposts.

0

Oui @Antoine Dewaele a raison. vous ne déclarez pas plusieurs itinéraires avec la même URL. votre fichier de route est comme ce

get 'tags/:tag' => 'posts#index', :as => :tag 

votre fichier de route devrait être comme ça

get 'tags/:tag' => 'posts#index', :as => :tag 
get 'all_pizza' => 'all_pizza#index', :as => :all_pizza 

Pour plus d'informations, vous pouvez visiter ici Rails Routing from the Outside In

+0

Pizza était juste un exemple de tag, pas une ressource. Donc, ne faites pas un itinéraire pour obtenir toutes les pizzas. –