よろしくお願い致します。
Railsでユーザーモデルを持った簡単なブログ機能を作成しています。
この時、ユーザーにimageカラム(string)と画像のupload機能を持たせて
ユーザーのプロフィール画像を表示したいと考えています。
画像のupload機能についてはcarrierwaveで実装済みなのですが、
画像をupしなかった場合にデフォルト画像を表示したいと思います。
現在、viewで
<% if user.image.present? %> <%= link_to image_tag(user.image), user_path(user) %> <% else %> <%= link_to image_tag("default.jpg"), user_path(user) %> <% end %>
こういった分岐をしてデフォルト画像を表示しているのですが、
あまりview側にこうしたことを書くのは良くないと伺いました。
そこで、controller側で
def create @user = User.new(user_params) @user.image ||= "default.jpg" (略) end
としてみたり、
model側で
(略) before_create :set_user_image private def set_user_image self.image = "default.jpg" if image.nil? end
としてみたり、試してみたのですが、imageカラムにうまく入っていないようで、中身がnilになってしまいます。
default.jpgはapp/assets/imagesの中に入っています。
何か良い方法はないでしょうか?
よろしくお願い致します。
あなたの回答
tips
プレビュー