1

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

(「NEVERREACHED!」というテキストはまったく表示されず、理由はわかりません...)

これは私のモデルです:

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

したがって、すでに述べたように、「NEVERREACHED」というテキストには到達しません。なぜアイデアはありますか?

その上、私はいつも警告を受けます:

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を文字列型として定義します。

この後、アプリケーションを実行してみて、条件が同じであるかどうかを知らせてください。:)

于 2012-06-23T15:25:11.333 に答える