Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 无法操作使用carrierwave gem保存的文件_Ruby On Rails 3_Carrierwave - Fatal编程技术网

Ruby on rails 3 无法操作使用carrierwave gem保存的文件

Ruby on rails 3 无法操作使用carrierwave gem保存的文件,ruby-on-rails-3,carrierwave,Ruby On Rails 3,Carrierwave,当我尝试使用carrierwave操作存储在数据库中的文件时,我收到以下消息: NoMethodError in DataFilesController#show private method `gets' called for /files/test_file.csv:CsvFileUploader 以下是错误产生的一些型号代码: def self.csv_import(file_wrapper, event_id) event = Event.find(event_id)

当我尝试使用carrierwave操作存储在数据库中的文件时,我收到以下消息:

NoMethodError in DataFilesController#show
private method `gets' called for /files/test_file.csv:CsvFileUploader
以下是错误产生的一些型号代码:

 def self.csv_import(file_wrapper, event_id)
    event = Event.find(event_id)
    file = file_wrapper.filename
    header = file.gets.strip

    keys = header.split(',')

    while (line = file.gets)
      params = {}
      values = line.strip.split(',')

      keys.each_with_index do |key,i|
        params[key] = values[i]
      end

      volunteer = event.volunteers.build(params)
      volunteer.save

    end
  end
这是我安装carrierwave文件的模型:

class DataFile < ActiveRecord::Base
  attr_accessible :attachable_id, :attachable_type, :filename
  belongs_to :attachable, :polymorphic => true
  mount_uploader :filename, CsvFileUploader
end
基本上,我有一个名为Events的模型,它与一个名为DataFile的模型具有多态关系。数据文件模型有一个名为“filename”的属性,该属性已装入carrierwave上载程序

谢谢

def create
    @event = Event.find(session[:stored_event_id].to_i)
    session[:stored_event_id] = @event.id
    @file = @event.data_files.build(params[:data_file])

    respond_to do |format|
      if @file.save
        format.html { redirect_to data_files_path(@event_id)}
        format.json { render json: @file, status: :created, location: @file }
      else
        format.html { render action: "new" }
        format.json { render json: @file.errors, status: :unprocessable_entity }
      end
    end
  end