10000hの技術メモ

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

Ruby on RailsⅡ2章 投稿を表示させよう

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

章の目次

  • 投稿を表示させよう
    • 投稿一覧ページの作成
    • Verb
    • 投稿詳細ページの作成
    • リダイレクト

記事目次

投稿一覧ページの作成

一覧ページはindexアクションを作って表示する。 Note.all@notes配列に入れる。

やったこと

  1. ルーティング
  2. アクション
  3. ビュー の設定。

まずroutes.rb

get '/notes' => 'notes#index'

を追加。

次にnotes_controller.rb

  def index
    @notes = Note.all
  end

を追加。

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

Verb

  • 投稿一覧ページへのリンクを作る。

Verbとは

POST / GET / PATCH / DELETEの4種類。(それぞれCRUDに対応) 参考:Rails のルーティング | Rails ガイド

RailsではURLとVerbの組み合わせで、どのコントローラのどのアクションを実行するのかが決まります。

投稿詳細ページの作成

  • 投稿の詳細を表示する
  • 投稿ごとにnoteのidが入るようにしたいが、これまでとはルーティングの仕方が異なる(名前付きルート)

詳細ページへのルーティング

get '/notes/:id' => 'notes#show', as:'note'

やったこと

  1. ルーティング
  2. アクション
  3. ビュー の設定。

routes.rb

get '/notes/:id' => 'notes#show', as:'note'

を追加。

notes_controller.rb

  def show
    
  end

を追加。

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

index.html.erbにshowアクションへのリンクを追加。

routes.rbを元に'notes#show'notes_controller.rbのshowアクション→変数@noteに指定したidの記事が入り、 show.html.erbtitlecontentを呼ばれる・・・? まだRoR全体の動きがわかりきっていない・・・。

リダイレクト

  • createアクションをリダイレクトする。
    • 新規投稿の後、create.html.erbでなくshow.html.erbを表示する。
    • create.html.erbが不要に

リダイレクトの書き方

アクションの最後に

redirect_to 転送先のURL

※URLに名前付けていじり始めてからわけが分からなくなってきた。noteとか、多分「全く別物だけど似たような名前を付けてる」箇所が混乱の元になってる気がする。 プレフィックスつけるとかでもっと上手に説明して欲しい。

今回の勉強時間:47分 累計勉強時間:2時間24分