自从回答了这个问题以来,回形针已经成熟了很多。如果您想通过传递 URL 来保存文件,从 Paperclip v3.1.4 开始,您只需将 URL 分配给您的 Paperclip 附件属性。
假设我有一堂课User
,我的附件叫做avatar
. 我们的User
模型中将包含以下内容:
has_attached_file :avatar
# Validate the attached image is image/jpg, image/png, etc
# This is required by later releases of Paperclip
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
在我们看来,我们可以定义一个隐藏字段来接受从 Aviary 接收到的临时 URL:
= f.hidden_field :avatar, id: 'avatar'
onSave
我们可以使用 Aviary回调设置这个隐藏字段的值:
var featherEditor = new Aviary.Feather({
apiKey: '#{ENV['AVIARY_KEY']}',
onSave: function(imageID, newURL) {
var img = document.getElementById(imageID);
img.src = newURL;
var avatar = document.getElementById('avatar');
avatar.value = newURL;
featherEditor.close();
}
});
在 onSave 中,您可以使用 AJAX 更新User
对象,使用 jQuery.submit()
提交表单,或者让用户在需要时提交。