Railsの画像まわりの質問です。
現在、ユーザー登録をした際に、プロフィール画像が自動で設定されるようにしたいと思っています。具体的には、以下のusers.controller.rbのcreateアクションのなかで、@userのimageカラム(string)にassets/images下にある画像のファイル名を格納することで、実現しようとしています。
しかしこれでユーザー登録をすると
The asset "assets/images/inu1.png" is not present in the asset pipeline.
というエラーが出力されます(全文は以下)。
もし私のやり方で誤っている点にお気づきの方がいらっしゃれば、お声がけいただけると幸いです。
ちなみに、この問題が解決した後は、「ユーザー登録の際にランダムでassets/images下にある画像からプロフィール画像が割り当てられる」ということを実現したいと思っているため、「CarrierWaveを用いてデフォルトで1つの画像をプロフィール画像として設定する」などの解決策は避けていただけるとありがたいです。
users.controller.rb
class UsersController < ApplicationController include SessionsHelper before_action :logged_in_user, only:[:show, :index, :edit, :update, :destroy] before_action :correct_user, only:[:edit, :update] before_action :admin_user, only: :destroy def index @users = User.all.order(created_at: :desc) end def show @user = User.find_by(id: params[:id]) @posts = @user.posts.order(created_at: :desc) end def new @user = User.new end def create @user = User.new(user_params) @user.image = 'inu1.png' if @user.save log_in @user flash[:success] = 'ログインしました' redirect_to @user else render 'new' end end def edit @user = User.find_by(id: params[:id]) end def update @user = User.find_by(id: params[:id]) if @user.update(user_params) flash[:success] = 'プロフィールを更新しました' redirect_to @user else render 'edit' end end def destroy User.find_by(id: params[:id]).destroy flash[:success] = 'ユーザーは削除されました' redirect_to users_url end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation, :image) end def correct_user @user = User.find_by(id: params[:id]) redirect_to(root_url) unless current_user?(@user) end def admin_user redirect_to(root_url) unless current_user.admin? end end
エラーメッセージ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/26 00:56