我有一个名为Profile
的模型:
has_attached_file :avatar
我正在验证它只接受图像,但是:
validates_attachment_size :avatar,:less_than => 2.megabytes
validates_attachment_content_type :avatar, :content_type => /^image\/(jpg|jpeg|pjpeg|png|x-png|gif)$/, :message => 'file type is not allowed (only jpeg/png/gif images)'
控制器操作实现如下:
@profile = Profile.find(params[:id])
if @profile.update_attributes(params[:profile])
redirect_to @profile, notice: "Profile was updated"
else
from_render = params[:render]
from_render = "show" if !["show","edit"].include?(from_render)
respond_to do |format|
format.html { render :action => from_render }
end
end
在视图中,我将其显示为:
<%= image_tag profile.avatar.url(:medium) %>
我允许从显示和编辑操作中更改图片,因此其他(在发生错误时知道重定向的位置)。问题是,如果我上传文本文件,视图将尝试渲染图像标记,该标记具有文本文件的href。这会导致呈现不正确的内容。所以,现在,profile.avatar
指向该文件,并且不保存附件。如何回退原始图像?
答案 0 :(得分:0)
我在更新之前保留了旧对象的副本,如果更新失败,我就会显示。