読者です 読者をやめる 読者になる 読者になる

10000hの技術メモ

この先生きのこるための勉強内容&時間記録

Ruby on RailsⅡ3章 投稿を編集、削除しよう

Progate Ruby on Rails

20170214@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]

章の目次

  • 投稿を編集、削除しよう
    • 投稿編集ページの準備
    • 投稿編集フォームの作成 ← 今回はここまで
    • 投稿データの更新
    • 投稿の削除

記事目次

投稿編集ページの準備

投稿編集ページを作る。 最初からフォームタイトルとコンテンツが入っている状態。

  • editアクションを用意
    • routes.rbに追加
    • notes_controller.rbにeditアクションを追加

やったこと

routes.rb

get '/notes/:id/edit' => 'notes#edit', as: 'edit_note'

を追加。

notes_controller.rb

def edit
  @note = Note.find(params[:id])
end

を追加。

app/views/notes/edit.html.erbを作成。

show.html.erbに追加するところで詰まった。 ヒントによると

<%= link_to “表示するテキスト”, 名前付きルート(@変数名.id), class: “class名” %>

と書くらしいので、

<%= link_to "編集", edit_note_path(@note.id), class: "btn edit-btn" %>

を追加。

ここまでで編集ボタンが表示され、押下するとeditページに飛ぶようになった。 まだeditページの中身を作成していないので空のページが表示される。

投稿編集フォームの作成

投稿フォームに初期値を入れたい件

ヘルパーを使って投稿フォームに初期値を入れる

  • text_field_tag
  • text_area_tag

edit.html.erbの記述

ハマった。

<h1>投稿を編集する</h1>
<%= form_tag do %>
  <%= text_field_tag :title, @note.title %>
  <%= text_area_tag :content, @note.content %>
  <%= submit_tag'保存' %>
<% end %>

の中で、最初

<%= text_field_tag:title, @note.title %>

のように、コロンの前に半角スペース無しで動かそうとしていたところ

unexpected tLABEL

等のエラーが出た。

スライドだと:titleが四角で囲ってあるおかげで分かりづらかった・・・。

今回の勉強時間:40分 累計勉強時間:3時間4分