0
私はProfile
という名前のモデルがあります:新しいアバターの変更でエラーが発生した場合、古いアバターにどのようにフォールバックできますか?
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
私は、画像を受け入れるだけに、それを検証しています
has_attached_file :avatar
を
そして、私はそれを次のように表示しています:
<%= image_tag profile.avatar.url(:medium) %>
私は、表示と編集の両方の動作から画像を変更できるようにしています。つまり、エラーの場合はリダイレクトする場所を知るためです。問題は、テキストファイルをアップロードすると、ビューはテキストタグへのhrefを持つ画像タグをレンダリングしようとします。これにより、何かが正しくレンダリングされなくなります。だから今はprofile.avatar
がファイルを指しており、添付ファイルは保存されません。どのように元の画像にフォールバックできますか?