0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails ユーザー編集ページと更新

Posted at

##ユーザー編集ページ

users/edit.html.erb
<%@users.errors.full_messages.each do |messages|%>・・・1
<%=message%>・・・1
<%end%>
<%=form_tag("/users/#{@user.id}/update",{multipart:true}do%>・・・2
<input name="name" value="<%=@user.name%>">
<input name="image" type="file">・・3
<input name="email" value="<%=@user.email%>">・・4
<input type="submit" value="保存">・・2
<%end%>

・・1配列@user_errors.full_messagesから要素を一つずつ取り出して、messageに代入。それを<%=message%>で表示
・・2保存ボタンをクリックするとフォームで入力した内容がURL"/users{@user.id}/update" に送信される。また、画像を送信したいときには multipart:trueを記述する。
・・3画像ファイルを選択するボタンを表示することができる
・・4初期値

users_controller.rb
def edit 
@user=User.find_by(id: params[:id])
end

userコントローラーのeditアクションでは、idがURLで入力した値の投稿者データを@userに代入した
##ユーザー更新

users_controller.rb
def update
@user=User.find_by(id: params[:id])/1
@user.name=params[:name] /2
@user.email=params[:email]/3
if params[:image]/4
@user.image_name="#{@user.id}.jpg"/5
image=params[:image]/6
File.binwrite("public/user_images/#{@user.image_name}",image.read)/7
end

・・1idがURLで入力した値である投稿者データを@userに代入
・・2名前がフォームで入力した値である物を変数@user.nameに代入
・・3メールアドレスがフォームで入力されたものを変数@user.emailに代入
・・4画像が送信されているかを判定
・・5usersテーブルの画像のファイル名をimage_nameカラムに(保存)上書き
・・6送信される画像ファイルを受け取る。
・・7画像を「public/user_images」内に保存。変数imageに対し、readメソッドを用いることでその画像データ(今回はimage)を取得

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?