プログラミング初心者です。現在progateなどを参考にしながらツイッターのようなSNSを実装しています。
herokuでの公開に向けてユーザのプロフィール画像の投稿をcarrierwaveを使って行いたいです。
現在、アップデートアクションでユーザの画像を保存するとエラーは出ないもののユーザテーブルのイメージカラムが空っぽのままであり、画像の表示ができません。
名前は編集するときちんと上書きされます。
エディットビューでアップロードした画像ファイルのみがユーザコントローラのアップロードアクションにうまく受け渡せていないのでしょうか?
その場合どのように解決すれば良いでしょうか?
初心者のため、どなたかお力を貸していただけると幸いです。
よろしくお願いします。
ruby
1#ユーザコントローラ 2class UsersController < ApplicationController 3 def ranking 4 @users = User.all 5 end 6 7 def show 8 @user = User.find_by(id: params[:id]) 9 end 10 11 def new 12 @user = User.new 13 end 14 15 def create 16 @user = User.new( 17 name: params[:name], 18 image: "default_user.jpg" 19 ) 20 if @user.save 21 flash[:notice] = "ユーザー登録が完了しました" 22 redirect_to("/users/#{@user.id}") 23 else 24 render("users/new") 25 end 26 end 27 28 def edit 29 @user = User.find_by(id: params[:id]) 30 end 31 32 def update 33 @user = User.find_by(id: params[:id]) 34 @user.name = params[:name] 35 @user.image = params[:image] 36 37 if @user.save 38 flash[:notice] = "ユーザー情報を編集しました" 39 redirect_to("/users/#{@user.id}") 40 else 41 render("users/edit") 42 end 43 end 44 45end 46 47
ruby
1#エディットビュー 2 3<%= form_with(model: @user, local: true) do |form| %> 4 5<div class="main users-edit"> 6<div class="container"> 7<div class="form-heading">アカウント編集</div> 8<div class="form users-form"> 9<div class="form-body"> 10<% @user.errors.full_messages.each do |message| %> 11<div class="form-error"> 12<%= message %> 13</div> 14<% end %> 15 16 17<p>ユーザー名</p> 18<input name="name" value="<%= @user.name %>"> 19<p>画像</p> 20<%= form.file_field :image, id: :user_image %> 21<%= form.hidden_field :image_cache %> 22 23<input type="submit" value="保存"> 24<% end %> 25 26</div> 27</div> 28</div> 29</div> 30
ruby
1#ユーザモデル 2 3class User < ApplicationRecord 4 validates :name, {presence:true, uniqueness:true} 5 mount_uploader :image, ImageUploader 6end 7

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。