Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 上传、Flash会话和Rails 2.3.8_Jquery_Ruby On Rails_Session - Fatal编程技术网

Jquery 上传、Flash会话和Rails 2.3.8

Jquery 上传、Flash会话和Rails 2.3.8,jquery,ruby-on-rails,session,Jquery,Ruby On Rails,Session,我正在使用Uploadify2.1.4和rails 2.3.8。我正在尝试应用FlashSessionCookie中间件修复程序,该修复程序应该在uploadify基于flash的请求期间维护会话信息。我在阅读了以下指南后应用了此修复: 但是,我的会话信息仍然没有被结转。以下是我的应用程序配置: # config/environment.rb config.load_paths += %W( #{RAILS_ROOT}/config/middleware ) 它只在log/de

我正在使用Uploadify2.1.4和rails 2.3.8。我正在尝试应用FlashSessionCookie中间件修复程序,该修复程序应该在uploadify基于flash的请求期间维护会话信息。我在阅读了以下指南后应用了此修复:

但是,我的会话信息仍然没有被结转。以下是我的应用程序配置:

# config/environment.rb 

config.load_paths += %W( #{RAILS_ROOT}/config/middleware )

它只在log/development.log中打印一个空哈希:

Session: {}

[Sniff]有人能看出我做错了什么吗?

我能够在2.3.8中使用这些步骤,如下所示:

我唯一需要修改的是flash_session_cookie_middleware.rb,如下所示:

require 'rack/utils'

class FlashSessionCookieMiddleware
  def initialize(app, session_key = '_session_id')
    @app = app
    @session_key = session_key
  end

  def call(env)
      if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
        @session_key = ActionController::Base.session_options[:key]
        req = Rack::Request.new(env)
        unless req.params[@session_key].nil?
          env['HTTP_COOKIE'] = "#{@session_key}=#{req.params[@session_key]}".freeze
        end
      end

      @app.call(env)
    end
end

对于那些想通过在Rails 3.0中上传来解决会话问题的人,请来到这里:

谁问过3.0版?!对于那些在谷歌上四处搜索并访问此页面的人::-)
use Rack::Lock
use ActionController::Failsafe
use FlashSessionCookieMiddleware, "_my_app_session"
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActiveRecord::SessionStore, #<Proc:0xb7176760@(eval):8>
use ActionController::ParamsParser
use Rack::MethodOverride
use Rack::Head
use ActionController::StringCoercion
run ActionController::Dispatcher.new
# In Controller
logger.info "Session: #{session.inspect}"
Session: {}
require 'rack/utils'

class FlashSessionCookieMiddleware
  def initialize(app, session_key = '_session_id')
    @app = app
    @session_key = session_key
  end

  def call(env)
      if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
        @session_key = ActionController::Base.session_options[:key]
        req = Rack::Request.new(env)
        unless req.params[@session_key].nil?
          env['HTTP_COOKIE'] = "#{@session_key}=#{req.params[@session_key]}".freeze
        end
      end

      @app.call(env)
    end
end