質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

90.35%

Railsのconfig/routes.rbの書き方について

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 360

troch

score 287

長文で失礼します。
現在、Ruby on Railsチュートリアル3章を読み進めてます。
リンク内容

この中のRailsのルーティングに関する解説がよくわかりません。

チュートリアルの大筋の流れとしては、静的なページを生成するために
$ rails generate controller StaticPages home help
でStaticPagesコントローラを生成すると、config/routes.rbが

Rails.application.routes.draw do
  get  'static_pages/home'
  get  'static_pages/help'
  root 'application#hello'
end


という風に自動的に更新されるのですが、この中の
get 'static_pages/home'
のルールが、/static_pages/homeというURLに対するGETリクエストを
StaticPagesコントローラのhomeアクションと結びつけている、という解説がよくわかりません。

私はconfig/routes.rbはルーティング(あるURLに対するリクエストに対応して特定のコントローラのアクションを返す)のための情報が記載されているファイル、と認識していました。

そのため、config/routes.rb内にはURL,コントローラ、アクションの3つは基本的に書かなければならないと思ってました。
(例えばroot 'application#hello'は/にアクセスした際にapplication_controller.rbのhelloアクションにルーティング、と理解してました)

一方で、今回の
get 'static_pages/home'
はURLとHTTPメソッドしか記載されておらず、どのコントローラのどのアクションにルーティングするのか、という情報が記載されておりません。
なぜこの記法でStaticPagesコントローラのhomeアクションにルーティングされるのでしょうか。

$ rake routes
と入力すると

          Prefix Verb URI Pattern                  Controller#Action
static_pages_home GET  /static_pages/home(.:format) static_pages#home


と表示されるためルーティングが成立しているのだと思いますが、理由がいまいちわかりません。
ご教授よろしくお願いいたします。

 補足情報

基本的にRailsチュートリアル通りの環境で、AWS & Cloud9、Railsのバージョンは5.1.4です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

'hoge/fuga'というURLにアクセスすることでデフォルトで'fohe#huga'のアクションが実行されます。もし、URLとアクションの組み合わせが一致しない場合、get 'hoge/huga' => 'foo#bar'のような書き方をします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/05 08:14

    デフォルトか任意指定かの違いだったのですね。
    理解できました! ありがとうございます。

    キャンセル

同じタグがついた質問を見る