我正在尝试将CarrierWaveDirect gem 与CarrierWave gem 结合使用,但在呈现直接上传表单时出现错误。这是在开发中,还没有在生产中尝试过。这是表格:
/app/views/users/registrations/edit.html.erb
<%= direct_upload_form_for @uploader do |f| %>
    <%= f.file_field :image %>
    <%= f.submit %>
<% end %>
错误<%= direct_upload_form_for @uploader do |f| %>在线,并且是
ArgumentError in Users/registrations#edit
 is not a recognized storage provider
更新:
我已经确定在开发服务器启动后对控制器代码进行任何更改,使其工作。例如,如果我p "test"在控制器的任何位置添加一条简单的线,它就可以工作。如果我然后停止开发服务器并重新启动它,错误将再次出现,但如果我取出p "test"线路,它会工作。所以我猜测由于某种原因,在服务器启动时没有正确设置配置设置,并且对控制器的代码进行更改会导致重新加载某些内容,从而正确设置它?
/app/controllers/users/registrations_controller.rb
  def edit
    @uploader = User.new.image
    @uploader.success_action_redirect = process_user_avatar_url
    super
  end
/app/uploaders/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  include CarrierWaveDirect::Uploader
  version :thumb do
   process :resize_to_fill => [50, 50]
  end
  def extension_white_list
    %w(jpg jpeg gif png)
  end
end
/app/models/user.rb
mount_uploader :image, ImageUploader
/config/initializers/s3.rb
CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => KEY,
    :aws_secret_access_key  => SECRET,
  }
  if Rails.env.production?
    config.fog_directory  = PRODUCTION_BUCKET
  else
    config.fog_directory  = DEVELOPMENT_BUCKET
  end
  config.fog_public     = false
end
版本
Rails 3.2.0
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-darwin11.3.0]
carrierwave (0.6.2)
carrierwave_direct (0.0.6)
fog (1.5.0)
发展.rb
Appname::Application.configure do
  config.cache_classes = false
  config.whiny_nils = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.active_record.mass_assignment_sanitizer = :strict
  config.active_record.auto_explain_threshold_in_seconds = 0.5
  config.assets.compress = false
  config.assets.debug = true
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.log_level = :warn
end