##ユーザー編集ページ
<%@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初期値
def edit
@user=User.find_by(id: params[:id])
end
userコントローラーのeditアクションでは、idがURLで入力した値の投稿者データを@userに代入した
##ユーザー更新
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)を取得