TechAcademy Webアプリケーションコース(18日目)
先日の続き Rails の学習
Router ...ユーザからの HTTP リクエストの入り口である Router
・リソース(動作の実行に必要な処理システム)に対する CRUD のための4つのルーティング GET(Read),POST(Create),PUT(Update),DELETE(Delete)
config/routes.rb へコードを書く
Rails.application.routes.draw do
get 'messages/:id', to: 'messages#show'
post 'messages', to: 'messages#create'
put 'messages/:id', to: 'messages#update'
delete 'messages/:id', to: 'messages#destroy'
end
「doからendの間にルーティングの設定を記述しますよ」と言う解釈
ルーティングとは、ネットワーク上でデータを送信・転送する際に、宛先アドレスの情報を元に最適な転送経路を割り出すこと。
URL に id が入れられることになり、例えば /messages/1 という URL に対して GET メソッドのリクエストを送ると、 id: 1 な Message を表示することになる。
POST の場合だけは別で id が不要。新規作成のメソッドとで id はまだ用意されていない。そのため /messages に POST メソッドでリクエストを送ると新規作成される。
messages#show というように Controller名 # アクション名 という形で表記されている。
・CRUDのための残り3つの補助ページ
直接 HTTP リクエストを送信するのではなく、ユーザは Web ブラウザ上に表示された Web ページ上でリソースの CRUD 操作を行う。操作のための Web ページも用意する必要がある。
一覧ページ表示(index)アクション ==GETメソッドでフォーム送信==> 詳細ページ(show)アクション
作成ページ表示(new)アクション ==POSTメソッドでフォーム送信==> 保存(create)アクション
編集用ページ表示(edit)アクション ==PUTメソッドでフォーム送信==> 更新(update)アクション
createやupdateのアクションは直接アドレスバーに入れて送信ができなく、ユーザーがWebページで フォームを使ってデータを送信する。それぞれ二つずつのアクションが必要。
詳細ページ(show)にアクセスするには、一覧ページ(index)が必要
# index: show の補助ページ
get 'messages', to: 'messages#index'
保存アクション(create)にデータを送るには、新規作成用のフォームページ(new)が必要
# new: 新規作成用のフォームページ
get 'messages/new', to: 'messages#new'
更新アクション(update)にデータを送るには、更新用のフォームページ(edit)が必要
# edit: 更新用のフォームページ
get 'messages/:id/edit', to: 'messages#edit'
を書き加える
・7つの基本ルーティングの省略形
Rails.application.routes.draw do
resources :messages
end
resources で生成されるルーティングが決まっている。
・Router の完成
Rails.application.routes.draw do
root to: 'messages#index'
resources :messages
end
トップページにアクセスしたときのルーティングを MessagesController の index アクションに設定する。
・Router の確認
$ rails routes
resources :messages で生成される7つのルーティングのことを RESTful なルーティングと呼ぶ。RESTful なルーティングは、リソースの CRUD 操作のために必要な7つのアクション。RESTfulと言われたらこの7つの基本アクション(index, show, new, create, edit, update, destroy)