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) %>

表示アクションと編集アクションの両方から画像を変更できるようにしているので、else(エラーが発生した場合にリダイレクトする場所を知るため)。問題は、テキストファイルをアップロードすると、ビューがテキストファイルへのhrefを持つ画像タグをレンダリングしようとすることです。これにより、何か間違ったものがレンダリングされます。したがって、ここでprofile.avatar、ファイルをポイントし、添付ファイルは保存されません。元の画像にフォールバックするにはどうすればよいですか?

4

1 に答える 1

0

更新前に古いオブジェクトのコピーを保持し、更新が失敗した場合はそれを示しました。

于 2012-05-23T07:00:33.687 に答える