我正在尝试使用paperclip
和jcrop
实施裁剪,但上传的图片不会发生任何事情。
我正在尝试以下方式。 这是我的模态代码..................
attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
has_attached_file :picture, :styles => {:big => "200>x200"},
:convert_options => {:blurred_card => "-blur 0x8"},
:path => ":rails_root/public/system/user_albums/:id/:style.:extension",
:processors => [:cropper],
:url => "/system/user_albums/:id/:style.:extension",
:default_url => "/images/sss.png"
after_update :reprocess_picture, :if => :cropping?
def cropping?
!crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end
def picture_geometry(style = :original)
@geometry ||= {}
@geometry[style] ||= Paperclip::Geometry.from_file(picture.path(style))
end
private
def reprocess_picture
picture.reprocess!
end
处理器代码
module Paperclip
class Cropper < Thumbnail
def transformation_command
if crop_command
original_command = super
if original_command.include?('-crop')
original_command.delete_at(super.index('-crop') + 1)
original_command.delete_at(super.index('-crop'))
end
crop_command + original_command
else
super
end
end
def crop_command
target = @attachment.instance
if target.cropping?
["-crop", "#{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}"]
end
end
end
end
我们是否需要在数据库中创建与作物相关的列,如下所示
:crop_x
,:crop_y
,:crop_w
,:crop_h
答案 0 :(得分:0)
您正在某个地方调用模型中的attr_accessible
。这将创建可使用update_attributes设置的属性的白名单。您的裁剪字段未列出,因此无法使用update_attributes设置它们。
解决方案是在模型中添加以下内容:
attr_accessible :crop_x, :crop_y, :crop_w, :crop_h
将启用以下功能:
@user.update_attributes(params[:user])
或者,您可以手动设置属性
@user.crop_x = x
@user.crop_y = y
@user.crop_w = w
@user.crop_h = h
答案 1 :(得分:0)
您只需要使用#而不是&gt;作为参数:
has_attached_file:picture,:styles =&gt; {:big =&gt; &#34; 200#X200&#34; }