2011-05-31 3 views
1

J'essaie actuellement d'imiter le comportement des dossiers/fichiers dans les rails avec le schéma de catégorie/articles. Donc, j'ai cela dans les routes:Comportement de barre oblique finale dans les rails Application

match '/:category/' => 'category#list_articles' 
match '/:category/:article.:format' => 'article#show' 

Fondamentalement, urls de demande sont:

http://www.example.com/category/ 
http://www.example.com/category/article.html 

Tout fonctionne. Le problème c'est que ça marche bien. Une url comme http://www.example.com/category (sans la barre oblique) sert également la liste des articles. Est-ce qu'il existe un moyen soit de bloquer cela avec un 404 ou mieux de rediriger vers la catégorie avec la barre oblique finale?

Utilisation de Rails 3, nginx, ruby ​​1.9.2. Merci!

+0

Upvote pour l'utilisation de la balise « slash ». – Yule

Répondre

2

Je ne suis pas sûr qu'il n'y a pas quelque chose dans des rails qui le fait pour vous, mais cela devrait faire:

class TrailingSlashes                          
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    if match = env['REQUEST_PATH'].match(/(.*)\/$/) 
     response = Rack::Response.new 
     response.redirect(match[1]) 
     response 
    else 
     @app.call(env) 
    end 
    end 
end 
Questions connexes