无法操作使用 Carrierwave gem 保存的文件
当我尝试使用 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
这是控制器代码:
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
基本上,我有一个名为“事件”的模型,它与一个名为“数据文件”的模型具有多态关系。 DataFile 模型有一个名为“文件名”的属性,该属性安装了载波上传器。
谢谢
I am getting the following message when i try to manipulate a file that i have stored in the database using carrierwave:
NoMethodError in DataFilesController#show
private method `gets' called for /files/test_file.csv:CsvFileUploader
Here some model code where the error is originating:
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
Here is my model where i mount the carrierwave file:
class DataFile < ActiveRecord::Base
attr_accessible :attachable_id, :attachable_type, :filename
belongs_to :attachable, :polymorphic => true
mount_uploader :filename, CsvFileUploader
end
Here is the controller code:
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
Basically I have a model called Events that has a polymorphic relationship with a model called DataFile. The DataFile model has a attribute called 'filename' that has carrierwave uploader mounted to it.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论