サムネイルが独自の「ベース」イメージになるように、既存のイメージバージョン、たとえば、thumb_xyz.jpgをCarrierwave経由で再アップロードできますか?既存のイメージバージョンをアップロードして独自の「ベース」イメージにする
私は店をつぶすことを試みました!アップローダーが、私はそれを動作させることはできません...
uploader.ImageUploader.new
uploader.store!(image_url(:thumb))
サムネイルが独自の「ベース」イメージになるように、既存のイメージバージョン、たとえば、thumb_xyz.jpgをCarrierwave経由で再アップロードできますか?既存のイメージバージョンをアップロードして独自の「ベース」イメージにする
私は店をつぶすことを試みました!アップローダーが、私はそれを動作させることはできません...
uploader.ImageUploader.new
uploader.store!(image_url(:thumb))
ここでは、微調整し、ニーズに合わせて変更することができます一つの解決策です!その結果、クロップされたものの完全に別個のベースイメージだけでなく、それ自身のクロップバージョンを有する元の親イメージが得られる。 Carrierwaveで通常使用され、参照される親画像のクロップバージョンは、新しい基本画像を生成する手段としてソートのプレースホルダとして機能します。だから、実際には、それは絶えず各作物ごとに変わるでしょう。
アップローダがモデルクラスにマウントされている場合(この場合)、アップローダまたはモデルクラスではなく、関連付けられたコントローラを介して作業を行う必要があります。これはとても重要です。
この場合、既存のイメージバージョンを選択的に取り出してアップロードすることが目的であり、コントローラの更新アクションの一部としてクロップ自体が行われるため、コードの追加が行われました。理解しておくべき重要なことの1つは、ファイルクロップファイル自体がどのように配置されているかです。@image.image.versions[:crop]
。その知識で、それはパラメータとして渡すだけの問題です。
images_controller.rb
...
def update
respond_to do |format|
if @image.update(image_params)
format.html { redirect_to @image, notice: 'Image was successfully updated.'}
format.json { render :show, status: :ok, location: @image }
#### HERE IS THE SOLUTION ###
@crop_image = current_user.images.build(image: @image.image.versions[:crop])
if @crop_image.save
format.html { redirect_to @crop_image, notice: 'Crop image successfully created.'}
format.json { render :show, status: :created, location: @crop_image }
else
format.html { render :new, notice: 'Crop image could not be saved for some reason...'}
end
else
format.html { render :edit }
format.json { render json: @image.errors, status: :unprocessable_entity }
end
end
エンド