今回は、プログラミング初学者がつまずきやすい「ルーティングのネスト」について簡単に解説したいと思います。とある記述の中に入れ子構造で別の記述をする「ネスト」について、この記事を通して理解を深めていきましょう。サイトのURL設計をする上でとても重要な概念になります!この記事の内容ルーティングのネストとはネストさせるメリットURLの階層構造ができる関係性のあるもの同士を紐づけることができるまとめルーティングのネストとはルーティングのネストとは、あるコントローラへのルーティングの記述の中に、別のコントローラへのルーティングを記述することです。この表現だけでは何を意味しているのか分からないと思うので、ツイッターの例を用いて詳しく見ていきましょう。ツイッターには、とある人がツイートを投稿した場合、そのツイートに対してコメントできる機能がありますよね(下の画像で言うと、トランプ大統領のツイートにMr.Aがコメントしています)。その場合、このアプリケーションのルーティング(routes.rb)の記述は以下のようになります。endendtweetsコントローラへのルーティングの記述の中に、commentsコントローラへの記述が書かれていますね。することによって、どのツイートに紐づいたコメントなのかをURLで判別できるようにしています。resourcesメソッドは、7つのアクション(index、show、new、create、edit、update、destroy)のルーティングを一括生成してくれるメソッドです。ネストさせるメリットルーティングをネストさせることによって得られるメリットは主に2つあります。URLの階層構造ができる関係性のあるもの同士を紐づけることができる(とあるツイートとそれに紐づくコメントなど)それぞれ順番に見ていきましょう。URLの階層構造ができるルーティングの記述をネストさせるとURLの階層構造ができます。先ほどのコードをもう一度振り返ってみましょう。endendこの記述により生成されるURLは、「/tweets/id/comments」になります。具体的に言うと、とあるツイートにコメントすると「/tweets/2/comments」のようなURLが生成されます。この「2」という数字はツイートのid番号です。このコメントは2番のツイートに対するコメントですよということが、URLから判断することができます。routes」してみます。すると、以下のようなパスが設定されていると思います。「/tweets/:tweet_id/comments(.:format)」に注目してください。「:tweet_id」の部分に、コメントと結びつくツイートのidが入ります。comments#createそれでは一方で、ネストさせていない場合はどうなるのでしょうか?ルーティングの記述を以下のように編集しました。routes」の結果がこのようになり、ツイートとコメントが結びついていないことが分かりますね。routes」について簡単に解説しています。resourcesメソッドを使用した時や、リンクを作成したい時に活躍するコマンドなので、ぜひこの機会に整理しておきましょう。...関係性のあるもの同士を紐づけることができるツイートとコメントの関係のように、ルーティングをネストさせることによって関係性のあるもの同士をを紐づけることができます。他にも、商品とそのレビューなどが例として挙げられます。関係があるもの同士は、原則ルーティングをネストさせて関係性のあるURLを生成しましょう。モデルではこのような関係性を「has_many」と「belongs_to」で表現しているね。routes」コマンドで生成されたパスを確認することができるルーティングをネストさせるメリットは、「URL設計」と「関係性があるもの同士の紐付け」の2点である今回は、ログラミング初学者がつまずきやすい「ルーティングのネスト」について簡単に解説しました。「ルーティングのネスト」はURL設計において非常に重要な概念なので、この機会にしっかり理解しておくことをおすすめします。yoshi19941117TechTechMedia【Ruby基礎】基本中の基本!メソッドの定義方法と使い方をまとめてみた!【Rails】フォームを簡単に実装できる「form_with」について分...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。