Uploadify - Скрепка - Rails 3.0.3 - PullRequest
1 голос
/ 10 февраля 2011

Я пытаюсь заставить http://www.uploadify.com/ работать с Ruby on Rails 3.0.3, файлы загружаются, но я пытаюсь исправить следующее сообщение об ошибке.Любая помощь высоко ценится.

Запущен POST "/ videos /" для 10.170.163.142 в 2011-02-10 16:57:16 +0000 Обработка VideosController # создать в виде HTML-параметров: {"Filename" => "tvshow.avi " "папка"=> "/", "_website_session"=> "BAh7CEkiD3Nlc3Npb25faWQGOgZFRiIlOTA1OTIwODE1NDNkZDhkYzU2Yjc0MWJhMTdiNWFlZTlJIhBfY3NyZl90b2tlbgY7AEZJIjEvd3dnSjQ3NE83cDQ3SkF0ZXU4alN3dHdkaHl5Wm9vV29XRllBOWc1ajRBPQY7AEZJIgx1c2VyX2lkBjsARmkG - f618cf0d51fe1beebcc03eb200d1b3d023c98757", "/ wwgJ474O7p47JAteu8jSwtwdhyyZooWoWFYA9g5j4A"=> "= authenticity_token", "FILEDATA"=> #>, "Загрузить"=>"Отправить запрос "} Выполнено в 0ms

ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityToken): app / middleware / flash_session_cookie_middleware.rb: 17: в` call '

Rendered / Volu.rvm / gems / ruby-1.9.2-p136 / gems / actionpack-3.0.3 / lib / action_dispatch / middleware / templates / rescues / _trace.erb (2.8ms) рендеринг /Volumes/Storage/.rvm/gems/ruby-1.9.2-P136 / драгоценные камни / actionpack-3.0.3 / Библиотека / action_dispatch / промежуточного программного обеспечения / теmplates / rescues / _request_and_response.erb (11,2 мс) отображается /Volumes/Storage/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.эрб в rescues / layout (20.4ms)

Я не понимаю, что здесь происходит, почему файл не загружается?

    require 'rack/utils'

    class FlashSessionCookieMiddleware

      include Rack::Utils

      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/
          params = ::Rack::Request.new(env).params
          env['HTTP_COOKIE'] = [ @session_key, params[@session_key] ].join('=').freeze unless params[@session_key].nil?
        end
        @app.call(env)
      end
    end

Ответы [ 4 ]

1 голос
/ 06 июня 2012

Я просматривал некоторое время, наконец нашел этот код для использования. Тем не менее, есть более новые варианты Uploadify. Quick c / p (это HAML)

Загрузить 3,1

$(document).ready(function() {
              $('#image-uploader').uploadify({
                swf             : '/uploadify/uploadify.swf',
                uploadLimit     : 10,
                auto            : true,
                multi           : false,
                script          : '/videos/',
                onComplete      : function(a, b, c, response){ eval(response) },
                formData        : {
                        '"#{key = Rails.application.config.session_options[:key]}"' : '"#{cookies[key]}"',
                        '#{request_forgery_protection_token}' : '#{form_authenticity_token}',
                      }
              });   
            });

Эта часть:

cancelImg       : '/images/uploadify/cancel.png',

Переместился в файл CSS.

Для сессий используйте гем flash_cookie_session, это гораздо лучше, чем пытаться вбить решение.

1 голос
/ 11 февраля 2011

Я нашел этот плагин https://github.com/trevorturk/flash_cookie_session, который отлично справился с работой, вот мое мнение

<% content_for :head do %>
<link href="/uploadify/uploadify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="/uploadify/jquery.min.js"></script>
<script type="text/javascript" src="/uploadify/swfobject.js"></script>
<script type="text/javascript" src="/uploadify/jquery.uploadify.min.js"></script>
<script type="text/javascript">
<%- session_key = Rails.application.config.session_options[:key] -%>
$(document).ready(function() {
  $('#video-upload').uploadify({
    uploader        : '/uploadify/uploadify.swf',
    cancelImg       : '/uploadify/cancel.png',
    auto            : true,
    multi           : false,
    script          : '/videos/',
    onComplete      : function(a, b, c, response){ eval(response) },
    scriptData      : {
            "<%= key = Rails.application.config.session_options[:key] %>" : "<%= cookies[key] %>",
            "<%= request_forgery_protection_token %>" : "<%= form_authenticity_token %>",
          }
  });   
});
</script>
<% end %>

Спасибо всем.

0 голосов
/ 23 апреля 2011

Просто заметка, на рельсах 3 мне пришлось добавить u и encodeURIComponent, чтобы он заработал.

{
 "<%= key = Rails.application.config.session_options[:key] %>" : "<%= u cookies[key] %>",
 "<%= request_forgery_protection_token %>" : encodeURIComponent("<%= u form_authenticity_token %>"),
}
0 голосов
/ 10 февраля 2011

Я предлагаю вам напечатать ваш @session_key в инициализации и убедиться, что он правильный. Имя ключа и его значение должны совпадать с тем, что есть в вашем инициализаторе.

...