Ruby on RailsⅡ2章 投稿を表示させよう
20170213@home Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
章の目次
- 投稿を表示させよう
- 投稿一覧ページの作成
- Verb
- 投稿詳細ページの作成
- リダイレクト
記事目次
投稿一覧ページの作成
一覧ページはindexアクションを作って表示する。
Note.all
で@notes
配列に入れる。
やったこと
- ルーティング
- アクション
- ビュー の設定。
まず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'
- ルーティングのURL部分に
:id
を付けて指定 as:名前
で、自分で名付けもできる 参考:Rails のルーティング | Rails ガイド
やったこと
- ルーティング
- アクション
- ビュー の設定。
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.erb
でtitle
とcontent
を呼ばれる・・・?
まだRoR全体の動きがわかりきっていない・・・。
リダイレクト
- createアクションをリダイレクトする。
- 新規投稿の後、
create.html.erb
でなくshow.html.erb
を表示する。 create.html.erb
が不要に
- 新規投稿の後、
リダイレクトの書き方
アクションの最後に
redirect_to 転送先のURL
※URLに名前付けていじり始めてからわけが分からなくなってきた。noteとか、多分「全く別物だけど似たような名前を付けてる」箇所が混乱の元になってる気がする。 プレフィックスつけるとかでもっと上手に説明して欲しい。
今回の勉強時間:47分 累計勉強時間:2時間24分