0
如何可以将现有的镜像版本,说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中使用并引用的父图像裁剪版本可用作各种占位符,以生成新的基本图像。所以在实践中,它会随着每一种作物而不断变化。
如果上传安装到模型类(如这里的情况一样),则工作需要通过相关的控制器来进行,而不是在上载或模型类。这个非常重要。
在这种情况下,因为目标是有选择地拉出来,并上传现有的图像版本,因为裁剪本身发生了控制器的更新行动的一部分,该代码添加作了那里。要理解的关键之一是文件裁剪文件本身的位置:@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
端