##記事編集画面
config/routes.rb
get"posts/:id/edit"=>"posts#edit"
posts/1/editというURLが送信されたときに、postsコントローラーのeditアクションが実行される
posts/edit.html.erb
<%=link_to("編集”,"/posts/#{@post.id}/edit")%>
「編集」をクリックすると、URLが/posts/id/editのページに移動
posts_controller.rb
def edit
@post=Post.find_by(id: params[:id])
end
postsコントローラーのeditアクションにおいて、idがURLで入力された値の投稿データを変数@postに代入した。
##投稿更新画面
updateアクション=>フォームの内容への保存・投稿一覧画面への転送
posts/edit.html.erb
<%= form_tag("/posts/#{@post.id}/update") do %>
<textarea name="content"><%= @post.content %></textarea>
<input type="submit" value="保存">
<% end %>
保存ボタンをクリックすると、フォームに入力された内容がURL"posts/#{@post.id}/updateに送信される。
posts_controller.rb
def update
@post = Post.find_by(id: params[:id])・・1
@post.content = params[:content]・・2
@post.save・・3
redirect_to('/posts/index')
end
しかし、updateアクションに対応するビューがないので、URL"/posts/index"に転送する。
・・1idがURLで入力した値の投稿データを変数@postに代入した。
・・2カラム名がcontentで、そのcontentがname属性で指定したフォームに入力されたデータで変数@post.contentに代入した。
・・3作成したPostインスタンスをPostテーブルに保存。