我有一个带有回形针图像附件的内容表以及一些用户选择的裁剪设置:
create_table "content", force: true do |t|
t.string "title"
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.integer "crop_x"
t.integer "crop_y"
t.integer "crop_w"
t.integer "crop_h"
end
为了在服务器端处理用户指定的图像裁剪,我有一个自定义的回形针处理器,我从here采购:
module Paperclip
class CustomCropper < Thumbnail
def initialize(file, options = {}, attachment = nil)
super
@current_geometry.width = target.crop_w
@current_geometry.height = target.crop_h
end
def target
@attachment.instance
end
def transformation_command
crop_command = [
'-crop',
"#{target.crop_w}x" \
"#{target.crop_h}+" \
"#{target.crop_x}+" \
"#{target.crop_y}",
'+repage'
]
crop_command + super
end
end
end
我的问题是,在图像附件之后,解析了crop_x,y,w,h params,因此自定义回形针处理器对所有字段都看不到nil并且不会裁剪图像正常。
# rails processes the image_xxx params before the crop_xxx params
@content = Content.new(content_params)
是否有一种干净的方式告诉Rails在附件图像之前处理裁剪边界字段?或者是否有一个基本上可以实现此目的的不同解决方案?
答案 0 :(得分:2)
对于我的生活,我无法弄清楚&#34;清洁&#34;办法。我最终做的是在使用附件调用更新/保存之前保存crop_
值。
例如:
def update
if article_params[:image_crop_y].present?
@article.image_crop_y = article_params[:image_crop_y]
@article.image_crop_x = article_params[:image_crop_x]
@article.image_crop_w = article_params[:image_crop_w]
@article.image_crop_h = article_params[:image_crop_h]
@article.save
end
if @article.update(article_params)
...
end
end
像我说的那样,不是&#34;最干净的&#34;方式,但它对我有效。