実現したいこと
deviseで認証機能を実装しています。
ユーザー編集時にプロフィール写真をアップできるようにしたいと考えています。
HTML
1<!-- index.html.erb ユーザー一覧ページ--> 2<img src="<%= "/user_images/#{user.image_name}" %>">
ruby
1//users_controller.rb 2class UsersController < ApplicationController 3 def index 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 email: params[:email], 19 image_name: "default_user.jpg", 20 ) 21 if @user.save 22 session[:user_id] = @user.id 23 flash[:notice] = "ユーザー登録が完了しました" 24 redirect_to("/users/#{@user.id}") 25 else 26 render("users/new") 27 end 28 end 29 30 def edit 31 @user = User.find_by(id: params[:id]) 32 end 33 34 def update 35 @user = User.find_by(id: params[:id]) 36 @user.name =params[:name] 37 @user.email = params[:email] 38 39 if params[:image] 40 @user.image_name = "#{@user.id}.jpg" 41 image = params[:image] 42 File.binwrite("public/user_images/#{@user.image_name}", image.read) 43 end 44 end 45 46end
ruby
1//application.html.rb 2class ApplicationController < ActionController::Base 3 protect_from_forgery with: :exception 4 before_action :authenticate_user!, only: [:/] 5 before_action :configure_permitted_parameters, if: :devise_controller? 6 7 protected 8 def configure_permitted_parameters 9 devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :image]) 10 devise_parameter_sanitizer.permit(:account_update, keys: [:name]) 11 end 12end 13
HTML
1<!-- app/views/devise/registrations/edit.html.erb --> 2<%= form_tag("/users/#{@user.id}/update", {multipart: true}) do %> 3 <p><%= f.label :image_name %><br /></p> 4 <%= f.file_field :image_name %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/24 03:21
退会済みユーザー
2018/11/24 04:15 編集
退会済みユーザー
2018/11/24 04:30
退会済みユーザー
2018/11/24 06:35
退会済みユーザー
2018/11/24 16:09
退会済みユーザー
2018/11/24 22:37 編集
退会済みユーザー
2018/11/25 16:25