使用Uploadify的Carrierwave给出了未定义的方法`has_key?'错误

时间:2012-02-10 03:58:08

标签: ruby-on-rails-3.1 uploadify carrierwave

Rails 3.1,ActiveRecord,JQuery

我正在使用Carrierwave将图像上传到使用AWS S3的模型。非常简单每个模型只有一个图像。我想用它来使用Uploadify。

没有Uploadify它可以正常工作,但有了它我得到错误:

NoMethodError (undefined method `has_key?' for #<ImageUploader:0x00000103c7f2f0>):

上传程序的代码单独运行,我跟着this post尝试让Uploadify工作。然后我使用this code来解决CSRF问题。

在edit.html.erb中设置Uploadify的代码是:

<% content_for :head do %>
  <%= javascript_include_tag 'jquery.uploadify.v2.1.4.min' %>
  <%= javascript_include_tag 'swfobject' %>
<% end %>
<%= content_for :scripts do %>
  <script type="text/javascript">
  <% session_key_name = Rails.application.config.session_options[:key] %>
    jQuery('input#facility_image').uploadify({
      'uploader'     : '/assets/uploadify.swf',
      'script'       : '<%=facilities_path%>',
      'fileDataName' : 'facility[image]',
      'fileExt'      : '*.png;*.jpg;*.gif',
      'cancelImg'    : '/assets/cancel.png',
      'multi'        : false,
      'scriptData'   :  {
           '_http_accept': 'application/javascript',
           '<%= session_key_name %>' : encodeURIComponent('<%= u cookies[session_key_name] %>'),
           'authenticity_token': encodeURIComponent('<%= u form_authenticity_token %>'),
        },
      'auto'         : true,
      'buttonText'   : 'Upload Image',
      'onComplete'   : function(e, id, obj, response, data) {
        $('#images').append(response);
      }
    });
  </script>
<% end%>

任何人都知道为什么会发生这种错误和/或如何修复它?

1 个答案:

答案 0 :(得分:0)

如果您正在使用设计,这是一个更好的解决方法http://ariejan.net/2011/03/27/rails-3-devise-uploadify-no-flash-session-hacks