2017年09月19日
Tweetこんにちは,徐です.
今日から色々書いていきます.
Rilasを教えていて,ルーティング全然わかってないなと感じます.
それは,"Railsの仕組みをわかってないな"と言うのももちろんありますが,
通信をしていくわけなので,ネットワークに関する知識ももちろん必要になります.
Railsの教科書や,プログラミングスクールでは,そういった低レイヤーのことはほとんど教えてもらえないので,
ルーティングを理解するためにも更に勉強が必要です.
Railsを触ったことある人ならば,まずはScaffoldから習い始めるんじゃないかと思います.
Scaffoldの説明は,他の記事に任せることにします.
Scaffoldでは,
resources :hogehoge
と,追加されるのではないでしょうか.
HTTP動詞 | パス | コントローラ#アクション | 目的 |
---|---|---|---|
GET | /hogehoge | hogehoge#index | すべてのhogehogeの一覧を表示 |
GET | /hogehoge/new | hogehoge#new | hogehogeを1つ作成するためのHTMLフォームを返す |
POST | /hogehoge | hogehoge#create | hogehogeを1つ作成する |
GET | /hogehoge/:id | hogehoge#show | 特定のhogehogeを表示する |
GET | /hogehoge/:id/edit | hogehoge#edit | hogehoge編集用のHTMLフォームを1つ返す |
PATCH/PUT | /hogehoge/:id | hogehoge#update | 特定のhogehogeを更新する |
DELETE | /hogehoge/:id | hogehoge#destroy | 特定のhogehogeを削除する |
こういうのが一通り生成されます.
Scaffoldを使ってなんとなくできたら,マニュアルで設定していくと思います.
例えば下記のようなものです.
get hogehoge/:id', to: 'hogehoge#show'
これは,resourcesで生成されるもの以外,URLを独自でカスタマイズするときによく使います.
これには,実は様々なオプションがあるのですが,また別の機会に解説していきたいと思います.
また,resoucesでは,上記のような7つのルーティングが生成されますが,
実際の開発では「不必要なものは書かない」というのが大事になります.
これは,後から入る開発者が,「これ使ってるの?使ってないの?」と混乱しないようにするためです.
そのため,
resources :hogehoge, only: [:index, :show]
と言うように,アクションを限定してあげたりします.
マニュアルで追加していくと,コードが煩雑になってくることが多々あります. また,管理が煩雑化しないようにする工夫もとても大事になっていきます.
ここでは,ちょっとRailsならではの道具について紹介していきます.
routeのmoduleとnamespaceとscopeの違いを読めばわかるのですが,主にRailsのディレクトリ分割や,パスをうまくカスタマイズする時に使います.(他にもshallowオプションがあったりします)
通常,大規模なシステムだと,app/controller
以下に,controllerのファイルを全部置き管理することは不可能です.
これは,使う機能が管理者(admin)やユーザ(user)など役割ごとに変わってきたりするからです.
コードの設計にも依存する部分ですので,今回は割愛します.
詳しくはエリック・エヴァンスのドメイン駆動設計やユースケース駆動開発実践ガイドを読んでみるのが良いと思います.
通常,member, collectionは本には使用例が書いてありますが,実践している人は多く見かけません.
下記の記事が参考になるかなと思います.
resourcesとうまく組み合わせると下記のようになります.
namespace :api, defaults: { format: :json } do
resources :hogehoge, only: [:index] do
collection do
resources :fuga, only: [:show, :index]
resources :foo, only: [:show, :index]
end
end
end
個人的に,こういうのをうまく使いこなせると,Rails熟れている感がでていいんじゃないかと思います.
もちろん,もっと他にも様々な機能があるので,Rails のルーティングを熟読するのをオススメします.
教えてて特に,全然ダメだなと思うことはそもそも,この辺のルート以前にhttp通信などネットワーク的なことです.
など,そもそも通信についてあまり良くわかってないということが多々見受けられます.
話すと長くなるので,こういう本読んで勉強するといいよ,というのを勧めておきます.
Webを支える技術 -HTTP,URI,HTML,そしてREST
特に,Webを支える技術はいい本です. 非常に初心者にはとっかりづらく,新卒の自分にはとてもつらい本でした. しかし,いまになって読み返してみるととてもいい本だな,と思います.
SideWorksでは,技術をきちんと学び,身につけてもらうために,「開発しながら体で覚える」ことを大事にしています.
本だけ読んでもわからん!!,もっと深く学びたい!!など,需要がありました,ぜひ下記のリンクよりお問い合わせください.
よろしくお願いします.