【问题标题】:Image upload in ruby with sinatra and datamapper and Carrierwave?使用 sinatra 和 datamapper 和 Carrierwave 在 ruby​​ 中上传图像?
【发布时间】:2012-06-23 15:04:23
【问题描述】:

我想用 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 的注释,它现在就可以工作了,但我实际上需要取消注释,有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: ruby sinatra datamapper carrierwave


    【解决方案1】:

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

    class Image
        include DataMapper::Resource
    
        property :id, Serial
        property :description, Text
    
        mount_uploader :image, ImageUploader
    end
    

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

    尝试在此之后运行您的应用程序,如果情况保持不变,请告诉我。 :)

    【讨论】:

    • 哇,谢谢它解决了我的大部分问题,只剩下一个问题:当我在控制器中取消注释 image.save 时,“永远不会到达!”仍然没有达到...
    • 我尝试自己修复这个问题,但我不得不承认我可能很愚蠢地修复了最后一个错误,知道吗?
    • 我遇到了完全相同的错误问题:Excon::Errors::SocketError at /upload getaddrinfo:请求的名称有效,但未找到请求类型的数据。 (SocketError)
    • image.save 可能已经/尚未保存图像。检查@user 是否脏,如果是..您必须先纠正它才能达到“从未达到”:)
    猜你喜欢
    • 2014-06-04
    • 2014-12-04
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多