如何确定Rack Middleware中的请求类型

时间:2014-09-24 21:55:52

标签: ruby-on-rails ruby-on-rails-3 middleware

我有以下Rack中间件来检测旧版本的Internet Explorer:

require 'user_agent'

module Rack
  class IERedirect

    def initialize(app, url)
      @app = app
      @redirect_url = url
    end

    def call(env)
      request = Rack::Request.new(env)
      useragent = UserAgent.new(env["HTTP_USER_AGENT"].to_s)
      path = env["PATH_INFO"]
      if (useragent.name == :ie && (useragent.version.to_i < 10))
        [ 302, {'Location'=> "#{@redirect_url}" }, [] ]
      else
        @app.call(env)
      end
    end
  end
end

我想要做的是为if语句添加另一个允许所有POST请求的条件。关于如何在中间件中实现这一点的任何想法?

由于

1 个答案:

答案 0 :(得分:3)

Rack :: Request对象中有一个方法:request.post? 还有.get? .patch? .put?等。