2010-12-09 16 views
1

Je rencontre des problèmes avec les rails de routage pour une boutique en ligne. Je veux itinéraires, par exemple:Rails routage pour une boutique en ligne, par exemple:/somecategory/someitem, provoque des problèmes avec obtient pour /javascripts/all.js

/cars/camaro 
/bikes/nightrod 

Pour ce faire, je dois cela à routes.rb:

match '/:cat/:item', :to => 'browse#item' 

Il fonctionne très bien, comme je peux parcourir tout bon. Mais cela cause des problèmes avec http GET (pour la plupart j'ai remarqué) '/javascripts/all.js' - ceux-ci semblent être acheminés à mon action de navigation # item à tort, ce qui bloque parce qu'il ne peut pas trouver cette catégorie ou produit.

Quelqu'un peut-il suggérer comment je peux résoudre ce problème? Grâce à un meilleur routage? Je préfère ne pas abandonner mon URL cool, mais un dernier recours est, je suppose, d'acheminer vers/parcourir/catégorie/produit ...

FWIW je reçois en heroku.

Répondre

2

De toute évidence, vous avez maintenant créé un chemin par défaut pour tout, ce qui n'est pas une excellente solution. Je ne l'ai pas vraiment essayé, mais je pense: les contraintes pourraient être ce que vous cherchez ... à savoir

match '/:cat/:item', :to => 'browse#item', :constraints => { :cat => /(cars|bikes|trucks|vans)/ } 

mais tout moment un changement de chat, vous devrez ajouter qu'il y ...

Alternativement, si vos catégories sont stockées dans la base de données, vous pouvez essayer:

match '/:cat/:item', :to => 'browse#item', :constraints => { :cat => /#{Category.all.map{|c|c.name}.join('|')}/ }