前提・実現したいこと
dockerを用いてSNS、webアプリを作成中です。
プロフィール画像を変更したくても、できないのでそこを改善したい。
該当のソースコード
#profiles_controller class ProfilesController < ApplicationController before_action :authenticate_user! before_action :find_profile, only: [:show, :edit, :update] def show @profile = Profile.find(params[:id]) end def new return redirect_to edit_profile_path(current_user.profile) if current_user.profile.present? @profile = Profile.new end def edit end def create @profile = Profile.new(profile_params) @profile.user = current_user if @profile.save redirect_to root_path, notice: "プロフィール情報の登録が完了しました" else render :new end end def update if @profile.update(profile_params) redirect_to root_path, notice: "プロフィール情報の更新が完了しました" else render :edit end end def destroy end private def find_profile @profile = Profile.find(params[:id]) end def profile_params params.require(:profile).permit( :name, :learning_history, :purpose, :image ) end end
index.html.erb
<div class="content-wrapper"> <div class="content-block"> <% @posts.each do |post| %> <div class="content"> <div class="user-about"> <div class="image"> <% if post.user.image.attached? %> <%= image_tag post.user.image %> <% else %> <%= image_tag "nouser.png" %> <% end %> </div> <div class="profile"> <div class="name-history"> <div class="name"> <%= post.user.name %> </div> <div class="learning-history"> <%= "学習歴: #{post.user.learning_history}年" %> </div> </div> <div class="purpose"> <%= "プログラミングを勉強している目的: #{post.user.purpose}" %> </div> </div> </div></div> <div class="sidebar"> <div class="box"></div> <div class="box"></div> </div> </div><div class="text"> <p><%= post.content %></p> </div> <% if post.images.attached? %> <div class="images"> <% post.images.each do |image| %> <%= image_tag image %> <% end %> </div> <% end %> <div class="action-menu"> <div class="like"> </div> <div class="comment"> </div> </div> </div> <% end %>
#profile.rb class Profile < ApplicationRecord has_one_attached :image belongs_to :user validates :name, presence: true validates :learning_history, presence: true validates :purpose, presence: true end
#Profile_controller.rb class ProfilesController < ApplicationController before_action :authenticate_user! before_action :find_profile, only: [:show, :edit, :update] def show @profile = Profile.find(params[:id]) end def new return redirect_to edit_profile_path(current_user.profile) if current_user.profile.present? @profile = Profile.new end def edit end def create @profile = Profile.new(profile_params) @profile.user = current_user if @profile.save redirect_to root_path, notice: "プロフィール情報の登録が完了しました" else render :new end end def update if @profile.update(profile_params) redirect_to root_path, notice: "プロフィール情報の更新が完了しました" else render :edit end end def destroy end private def find_profile @profile = Profile.find(params[:id]) end def profile_params params.require(:profile).permit( :name, :learning_history, :purpose, :image ) end end
#_form.html.erb <%= form_with model: @profile, local: true do |f| %> <div class="form-group"> <%= f.label :name, "ニックネーム" %> <%= f.text_field :name %> </div> <div class="form-group"> <%= f.label :learning_history, "学習歴(年)" %> <%= f.number_field :learning_history %> </div> <div class="form-group"> <%= f.label :purpose, "学習目的" %> <%= f.text_field :purpose %> </div> <div class="form-group"> <%= f.label :image, "プロフィール画像"%> <%= f.file_field :images %><br> </div> <%# f.object = post %> <% if f.object.image.attached? %> <div class="image-preview"> <span>現在アップロードされている画像:</span> <%= image_tag f.object.image %> </div> <% end %> <div class="submit-block"> <%= f.submit 'Update Profile', class: "button" %> </div> <% end %>
詳細
画像を任意のものに変更しようとしても、
_form.html.erbのif文のプロフィール写真がない時の表示する画像が表示されてしまいます。
dbにそもそも反映されているのかも怪しいです。。再起動はしたのですが改善されませんでした。
乱雑な文章申し訳ありません。どなたかご教授いただけないでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/27 04:09
2021/05/27 08:17
2021/05/27 12:43
2021/05/27 22:37
2021/05/27 22:42
2021/05/28 05:35
2021/05/28 06:08
2021/05/28 06:09
2021/05/28 15:56
2021/05/29 00:21
2021/05/29 03:55 編集
2021/05/29 08:04