我在Sinatra网站上工作,允许用户上传文件。我有这个行动路线:
post '/upload' do
params.delete 'submit'
UsrUpld.new(
:name => params[:name]
:created_at => Time.now
).save
params[:photos].each do |photo|
File.open('public/uploads/' + UsrUpld.id + '/' + photo[:filename], 'w') do |file|
file.write(photo[:tempfile].read)
end
end
redirect '/index'
end
我认为这应该在MongoDB中创建文档,其中包含两个字段 name 和 created_at ,来自POST请求的take文件并将其写入 public / uploads / ID /FILE.jpg 。但Pow回复了我未定义的方法`id'对于UsrUpld:Class 。如何用Mongoid询问对象的id?
提前谢谢。
答案 0 :(得分:0)
要问一个id,对象应该放在应该包含这个对象的变量中,所以代码应该如下所示:
post '/upload' do
params.delete 'submit'
u = UsrUpld.new(
:name => params[:name],
:created_at => Time.now
)
u.save
params[:photos].each do |photo|
unless File.exists?('public/media/' + u.id)
Dir.mkdir('public/media/' + u.id)
end
File.open('public/uploads/' + u.id + '/' + photo[:filename], 'w') do |file|
file.write(photo[:tempfile].read)
end
end
redirect '/index'
end
在打开文件之前也应该存在dir,这就是添加 Dir.mkdir 行的原因。