私は次の名前のモデルを持って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
、ファイルをポイントし、添付ファイルは保存されません。元の画像にフォールバックするにはどうすればよいですか?