🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

900閲覧

ルーティングが理解できない

ifaoerij

総合スコア34

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

1クリップ

投稿2019/12/18 15:08

イメージ説明

ProgateでRailsの学習を行っているのですが、上記の意味が理解できません。

URLを上から探したとしても、posts/:idはposts/indexと違うので、そもそも合致しないような気がするのですが。。。

yuya1028👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

僕も昔、プロゲートで学んでいて、そこはものすごく詰まりました
今は完全に理解できているのでお答えします

:id というのは ○○ という何でも当てはまる箱のようなものと考えてください

ここで説明しているのは「get "posts/○○"」という形のものはすべて「get "post/:id"」とみなすという事なのです
なにを言ってるのか分からないと思うので例を書いてみます

get "posts/:id"と同一とみなされるもの
get "posts/index"
get "posts/home"
get "posts/about"
get "posts/contact"
get "posts/help"

get "posts/:id"と同一とみなされないもの
get "users/index"   ← これは同一とみなされない、なぜなら get "users/○○"の形だから
get "users/home"
get "pages/index" ← これは同一とみなされない、なぜなら get "pages/○○"の形だから
get "pages/contact"
get "posts/:id/edit" ← これは同一とみなされない、なぜなら get "posts/○○/○○"の形だから

投稿2019/12/18 18:27

編集2019/12/18 18:31
story_aniki

総合スコア197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ifaoerij

2019/12/19 05:44

解答ありがとうございます! 今夜自宅で試してみたいと思います!
ifaoerij

2019/12/20 15:46

上記の内容は理解できたのですが、posts/:idの下にposts/indexを記載すると、post/indexにはアクセスできないということでしょうか?
story_aniki

2019/12/20 21:03

その通りです プロゲートの解説に書いてある通り、上から順番に参照をしていきますので、、posts/:idの下にposts/indexを記載すると.post/indexに飛ぶはずのものは、すべてpost/:idの指定したルート(post#show)にとびます。そして何らかの不具合が出てエラーになると思われます
ifaoerij

2019/12/22 04:17

ちなみに、上記のことは/:id限定なのでしょうか? 例えば、posts/hoge       posts/index      があると、posts/indexをリクエストしてもposts/hogeにマッチしてしまうのでしょうか?
story_aniki

2019/12/22 05:49

:idだけではなく:user_idとか:post_idとかいろんなものが将来出てくると思います 「:」が付くものだけは特殊と考えておけば間違いありません それ以外は普通の思考で、「:」が付くものだけは箱のようなものと考えてください
ifaoerij

2019/12/22 07:06

ありがとうございます!納得できました!
guest

0

ご丁寧にありがとうございます!
今夜自宅で試して確認したいと思います!

投稿2019/12/19 05:43

ifaoerij

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問