0

我有一个名为的模型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指向文件,附件没有保存。如何回退到原始图像?

4

1 回答 1

0

我在更新之前保留了旧对象的副本,如果更新失败,我会显示出来。

于 2012-05-23T07:00:33.687 回答