Carrierwave_Direct的direct_upload_form_for返回未定义的方法`

2019-09-29 06:37发布

我一直在挣扎与此了几个小时。 当使用carrierwave_direct的direct_upload_form_for在我看来,它返回我这个错误:

FileUploader Carrierwave类:

class FileUploader < CarrierWave::Uploader::Base
  include CarrierWaveDirect::Uploader
end

ManualFile型号:

class ManualFile
  include Mongoid::Document
  mount_uploader :file, FileUploader

  field :name, :type => String
end

UploadController:

class UploadController < ApplicationController
    def manual_new
        @uploader = ManualFile.new.file
        @uploader.success_action_redirect = upload_edit_path
    end

    def manual_edit
        @myfile = ManualFile.new(key: params[:key])
    end
end

我的观点:

<%= direct_upload_form_for @uploader do |f| %>
  <%= f.file_field :file %>
  <%= f.submit %>
<% end %>

我不明白我在做什么错。 我试图按照此railscast 。 我使用Ruby 1.9.3,Rails的3.2.3,Mongoid 3指着github上主carrierwave宝石。

Answer 1:

显然direct_upload_form_for与ActiveRecord的效果最好。 为了使工作(或至少不崩溃)Mongoid,添加以下行到我的文件上传。

include ActiveModel::Conversion
 extend ActiveModel::Naming

所以你的情况:

class FileUploader < CarrierWave::Uploader::Base
    include CarrierWaveDirect::Uploader

    include ActiveModel::Conversion
    extend ActiveModel::Naming
end


文章来源: Carrierwave_Direct's direct_upload_form_for returns undefined method `model_name' for FileUploader:Class