Ruby on rails Rails应用程序中的尾部斜杠行为

Ruby on rails Rails应用程序中的尾部斜杠行为,ruby-on-rails,ruby,ruby-on-rails-3,nginx,slash,Ruby On Rails,Ruby,Ruby On Rails 3,Nginx,Slash,我目前正试图用category/articles模式模拟rails中的文件夹/文件行为。所以,我在路线上有这样的想法: match '/:category/' => 'category#list_articles' match '/:category/:article.:format' => 'article#show' 基本上,请求URL是: http://www.example.com/category/ http://www.example.com/category/ar

我目前正试图用category/articles模式模拟rails中的文件夹/文件行为。所以,我在路线上有这样的想法:

 match '/:category/' => 'category#list_articles'
 match '/:category/:article.:format' => 'article#show'
基本上,请求URL是:

http://www.example.com/category/
http://www.example.com/category/article.html
一切正常。问题是它工作得很好。类似
http://www.example.com/category
(不带尾随斜杠)也用于文章列表。是否有一种方法可以用404来阻止这一点,或者更好地用斜杠重定向到类别


使用Rails3、nginx和Ruby1.9.2。谢谢

我不确定rails中是否有适合您的功能,但这应该可以:

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
向上投票以使用“斜杠”标记。