2017-07-09 22 views
0

我正在使用CarrierWaveAngularJS客戶端上傳文件。爲carrierWave產生的另一個命名空間控制器另一個命名空間。Rails:如何在另一個命名空間的控制器中創建類的對象?

所以,當我試圖創建上傳的對象控制器內,我收到以下錯誤

uninitialized constant Api::V1::ProductsController::FileUploader 

這裏是我的目錄結構:

app 
|--controllers 
    |--api 
     |--controllers 
     |--api 
      |--v1 
       |--products_controller.rb 
|--uploaders 
    |--file_uploader.rb 

products控制器

class Api::V1::ProductsController < ApplicationController 
    respond_to :json 

    ...... 

    def createFromExcel 
    puts "------------------------------------" 
    puts params[:file] 
    puts "------------------------------------" 
    uploader = FileUploader.new 
    uploader.store!(params[:file]) 
    end 


end 

的FileUploader類:

class FileUploader < CarrierWave::Uploader::Base 

    # Include RMagick or MiniMagick support: 
    # include CarrierWave::RMagick 
    # include CarrierWave::MiniMagick 

    # Choose what kind of storage to use for this uploader: 
    storage :file 
    # storage :fog 

    # Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    # Provide a default URL as a default if there hasn't been a file uploaded: 
    # def default_url(*args) 
    # # For Rails 3.1+ asset pipeline compatibility: 
    # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 
    # 
    # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    # end 

    # Process files as they are uploaded: 
    # process scale: [200, 300] 
    # 
    # def scale(width, height) 
    # # do something 
    # end 

    # Create different versions of your uploaded files: 
    # version :thumb do 
    # process resize_to_fit: [50, 50] 
    # end 

    # Add a white list of extensions which are allowed to be uploaded. 
    # For images you might use something like this: 
    def extension_whitelist 
    %w(xlsx xls) 
    end 

    # Override the filename of the uploaded files: 
    # Avoid using model.id or version_name here, see uploader/store.rb for details. 
    # def filename 
    # "something.jpg" if original_filename 
    # end 

end 

如何將我的控制器中創建FileUploader類的對象?

+0

爲什麼你需要在控制器內創建它? Carrierreave在您的模型上工作;你用'mount_uploader'建立了一個模型嗎? – Gerry

+0

我不想要永久存儲,我只需要遍歷電子表格並讀取數據並將其保存到數據庫。 – Paras

+0

試着將'require'uploaders/file_uploader''添加到控制器 – Pavan

回答

0

嘗試使用uploader = ::FileUploader.new

相關問題