1

我想用 Carrierwave 上传单个图像,问题是,它正在上传文件并将其保存到目录 uploads 中,在此文件夹中创建另一个名为 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'

同时我不知道为什么...

更新:只要我不在主控制器中取消注释 image.save ,它现在就可以工作,但我实际上需要取消注释,任何想法如何解决这个问题?

4

1 回答 1

1

property :image将图像模型中的行删除为:

class Image
    include DataMapper::Resource

    property :id, Serial
    property :description, Text

    mount_uploader :image, ImageUploader
end

mount_uploader 本身将 :image 定义为 String 类型。

尝试在此之后运行您的应用程序,并让我知道条件是否保持不变。:)

于 2012-06-23T15:25:11.333 回答