ブラウザなどクライアントにWEBページが表示されるにはWEBサーバにHTTPリクエストを送る必要があります。
このHTTPリクエストには二つ大事な要素がありますのでまずはこの二つを確実に覚えましょう。
こちらの二つの組み合わせがHTTPリクエストです。リクエストを受けたRailsアプリのあるWEBサーバはリクエストに応じた処理を行い、HTTPレスポンスをクライアントに返します。
ではこの二つは一体何か見ていきましょう。
HTTPリクエストの一つ目の要素はURI(Uniform Resource Identifier)です。URIはURLと同じ意味として考えて良いです。厳密には少し違いますが、URIが正式名称、URLは俗称です。
しかし現在では俗称であるURLの方が一般的ですね。このURIがHTTPリクエストの構成要素の一つです。
もう一つの構成要素はHTTPメソッドです。HTTPメソッドは8つありますがそのうちRailsで扱う以下5つを必ず覚えておいてください。
HTTPリクエストとは上記URI(URL)とHTTPメソッドの二つのセットの事を言います。
メソッド | 意味 |
---|---|
GET | リソースの取得 |
POST | リソースの作成 |
PUT(PATCH) | リソースの更新 |
DELETE | リソースの削除 |
HTTPメソッドのGETはリソースの取得です。WEBアプリにおいてはHTMLなどのデータの取得を要求し、画面が表示されるわけですね。ブラウザのアドレスバーに直接URLを入力してWEBページを表示させようとするときはこのGETメソッドが送信されています。
HTTPメソッドのPOSTメソッドはリソースの作成です。Railsアプリにおいては新規作成の時に使われます。例えばデータベースに新しいレコードを作成する際にはこのPOSTメソッドを使いましょう。HTMLの<form>要素のデフォルト値はPOSTになります。
HTTPメソッドのDELETEメソッドはリソースの削除です。例えばデータベースのレコードを削除するときにはこのHTTPメソッドを使いましょう。
それでは早速ルーティングの設定を行いましょう。
ルーティングを確認するコマンドは以下になります。よく使うコマンドですから必ず覚えるようにしてください。
$ rails routes
railsのバージョン等によって初期状態のルーティングは違います。初期のルーティングは現段階で理解する必要はありません。今後自身で追加したルーティングについては理解しましょう。初期状態の確認が出来ましたらURIの設定を追加していきます。ルーティングは一つのファイルで全て設定することになります。まずはconfig/routes.rbファイルを開いてください。
config/routes.rb
Rails.application.routes.draw do
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
# Defines the root path route ("/")
# root "articles#index"
end
このようになっていますでしょうか?
do~endブロック内にコメントが書かれているだけだと思います。(Railsのverによってコメント内容は違います。)このdo~endブロック内にルートを記載していきます。
以下のようにdo~end内を修正してください。
Rails.application.routes.draw do
resources :posts #この行を追加
end
この一行だけで7つのルートが規約によって自動生成されます。増えた7つのルートを確認してみましょう。
$ rails routes
以下のようなルートが増えていると思います。
Prefix | Verb | URI Pattern | Controller#Action |
---|---|---|---|
posts | GET | /posts(.:format) | posts#index |
POST | /posts(.:format) | posts#create | new_post | GET | /posts/new(.:format) | posts#new |
edit_post | GET | /posts/:id/edit(.:format) | posts#edit |
post | GET | /posts/:id(.:format) | posts#show |
PATCH | /posts/:id(.:format) | posts#update | |
PUT | /posts/:id(.:format) | posts#update | |
DELETE | /posts/:id(.:format) | posts#destroy |
RailsアプリではHTTPリクエストを送るとconfig/routes.rbファイルの設定によってあるコントローラの中の一つのアクションを実行します。この組み合わせ表がこちらになります。
表の見方は以下のようになっています。
現段階ではURLヘルパやコントローラやアクションといったものは学習していません。しかし学習が終わるころにはこの表を暗記できるくらいになっているようにしましょう。
HTTPリクエストが送信されると、ある一つのコントローラのアクションが選択されるという事は覚えておいてください。
まだ現段階ではコントローラやアクションは学んでいませんが、生成されるアクションの名前と役割について説明しておきます。
resourcesで生成されるルートは7つです。自動生成される7つのアクション名は決まっていますのでそれぞれの役割を把握しておくことが肝要です。
アクション名 | HTTPメソッド | 概要 |
---|---|---|
index | GET | 一覧画面 |
create | POST | リソースの新規作成 |
new | GET | 新規作成画面 |
edit | GET | 編集画面 |
show | GET | 詳細(個別)画面 |
update | PUT/PATCH | リソースの更新 |
destroy | DELETE | リソースの削除 |
今回は掲示板のリソースである投稿(Post)を操作することになります。
一般的なデザインパターンですと投稿一覧を表示する画面が欲しくなるでしょう。その際に使うアクションはindexです。
一覧ページがあったら投稿一つ一つの個別の詳細画面も必要かもしれません。詳細画面のアクションはshowとして用意されました。
また、投稿を作成するページも作成するとします。そのアクションはnewとして用意されています。この新規投稿作成画面から実際にデータベースに保存するアクションはcreateです。リソースの新規作成のHTTPメソッドはPOSTを使うと学習しましたね。
さらに投稿の編集画面はedit、実際にデータベースの更新を行うのはupdateアクションとなります。
不要になったり誤った投稿を削除するアクションはdestroyという事になります。
この一連の7つのアクションはよく使われる操作を集めたものです。アクション名と役割をしっかり覚えておきましょう。
以下resourcesにより自動生成されるルーティングには生成パターンが決まっています。役割も必ず覚えましょう。
resources :xxxs
また、resourcesの引数にはモデルの小文字複数形(:xxxs)を指定し、後述するコントローラ名もこの単数複数形に合わせることで余計な記述を増やすことなくシンプルなコーディングをすることができます。
この引数 :xxxsはURLパターンの一部として採用されます。MVCアーキテクチャでは後述するコントローラ名をURLに含めることがよくあります。
Prefix | Verb | URI Pattern | Controller#Action | role |
---|---|---|---|---|
xxxs | GET | /xxxs(.:format) | xxxs#index | 一覧画面 |
POST | /xxxs(.:format) | xxxs#create | 新規作成処理 | new_xxx | GET | /xxxs/new(.:format) | xxxs#new | 新規作成画面 |
edit_xxx | GET | /xxxs/:id/edit(.:format) | xxxs#edit | 編集画面 |
xxx | GET | /xxxs/:id(.:format) | xxxs#show | 詳細画面 |
PATCH | /xxxs/:id(.:format) | xxxs#update | 更新処理 | |
PUT | /xxxs/:id(.:format) | xxxs#update | 更新処理 | |
DELETE | /xxxs/:id(.:format) | xxxs#destroy | 削除処理 |
ターミナルからルーティングを確認するには以下コマンドを実行します。
$ rails routes
よく使うコマンドです。覚えておきましょう。