概要
「【Rails×React】UberEats風アプリを作りながら、SPA開発を学ぼう」を使って学んでいく上で自分で勉強記録アプリを作りたいと思ったので、完成するかは置いといて、とりあえず学んだことを自分が作りたいものに置き換えて考えていく。
内容
サーバーサイドにおけるルーティングを書いていく。いわゆるwebページのURLを決めていく感じである。
例えば、買い物をするサイト(sample.com)があったとする。そのTOPページのURLがhttps://sample.com
だとする。そこから商品一覧ページに遷移した時のURLはhttps://sample.com/goods
のようなURLとなるでしょう。また、そのサイトにおける自分のプロフィールページはhttps://sample.com/myprofile/12334
などが考えられる。最後の数字はユーザごとに割り当てられたIDと考えてもらえれば。。。
このように特定のURLいわゆるリソースを取得するための道筋、ルートを書き記していく。
実装
基本的な書き方は以下の通りである。
- do endのブロックでくくることでrailsのルーティングを定義できる。
Rails.application.routes.draw do
...
end
- namespace: hogeと書くことで名前空間を付与できる。
- これはコントローラを表したものになっており、下記のようなnamespaceを用いるのであれば
app/controllers/api/v1/
というディレクトリに作成することになる - namespaceは複数配置することができる
- これはコントローラを表したものになっており、下記のようなnamespaceを用いるのであれば
namespace :api do
namespace :v1 do
...
end
end
- 特定のリソースを表したい場合は、
resources
を使う-
resources :hoge
で:hoge
というリソースに対して7つのルーティングが自動で生成される。 - 7つというのはGETやPOST、DELETEなどのHTTPメソッドと呼ばれるものに対応したルーティングである。
- 気になる方はこちらを参照
-
- 特定のリソースを表したい場合は以下のような書き方でも可能
- これはつまり「
line_foods/replace
というURLに対してPUTリクエストがきたら、line_foods_controller.rb
のreplace
メソッドを呼ぶ」ということを意味する -
resources :hoge
との違いは、アプリケーション独自のルーティングとコントローラー、そのアクションに対応させられるという点 - 原則は
resources、resource
で書く、例外的に必要であればput ... to:
も許容する形が学習サイト曰く良いらしい
- これはつまり「
put 'line_foods/replace', to: 'line_foods#replace'
上記の書き方を元に書いたconfig/routes.rb
が以下の通りである。
Rails.application.routes.draw do
resources :users do
resources :articles do
resources :scores
end
end
end
ちなみにターミナル上で下記コマンドを叩くことでそのアプリケーションで定義されているルーティングの一覧を見ることができる。
下記画像が現段階のルーティングの一覧である。httpメソッドをちゃんと指定していないため、不要なルーティングが残った状態である。今後コントローラを作成していく際に消していきたいと思う。
またルーティングの一覧の中から今後特定のルーティングを探したいときが来ると思われる。
その際は以下のようなgrep
コマンド等を駆使することで容易に見つけることができるので、興味ある方はこういうことも学ぶといい。
# 出力されたrouts一覧から、'order'が含まれる一行のみを出力する
$ rails routes | grep order
参考記事
- 【Rails×React】UberEats風アプリを作りながら、SPA開発を学ぼう