我想用Carrierwave上传一个图像,就是上传文件并将其保存到目录上传中,在这个文件夹中创建另一个名为tmp的文件夹,在tmp文件夹中创建另一个文件夹包括图像。 事情是它似乎并没有停止上传,上传和上传,即使图像完全上传到该文件夹,我可以用feh(或任何其他图像浏览器)打开这个图像。
这就是我的控制器的样子。
get "/new" do
protect!
erb :new
end
post "/new" do
protect!
@user = User.get(session[:user_id])
image = @user.image.new(
:description => params[:description],
:image => params[:image]
)
# image.save
"NEVER REACHED!"
end
(文本“永远不会到达!”根本不会显示,我不知道为什么......)
这是我的模特:
class ImageUploader < CarrierWave::Uploader::Base
def extensions_white_list
%w(jpg jpeg gif png)
end
storage :file
end
class Image
include DataMapper::Resource
property :id, Serial
property :description, Text
property :image, String, :auto_validation => false
mount_uploader :image, ImageUploader
end
class User
include DataMapper::Resource
property :id, Serial
has n, :post
end
正如已经提到的,从未达到过“永远不会达到”的文本。任何想法为什么?
此外,我总是收到警告:
Defining property for an uploader is deprecated at /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
我不知道为什么......
UPDATE:只要我不在主控制器中取消注释image.save,它就会以某种方式工作,但我实际上需要取消注释,任何想法如何解决这个问题?
答案 0 :(得分:1)
将图片模型中的property :image
行删除为:
class Image
include DataMapper::Resource
property :id, Serial
property :description, Text
mount_uploader :image, ImageUploader
end
mount_uploader本身将:image定义为String类型。
尝试在此之后运行您的应用程序,并让我知道条件是否保持不变。 :)