ルートとリソース
RESTful ルーティングです。
「ルートとリソース」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
ルーティングとは
ルーティングは、受信したHTTPリクエスト(メソッドとパスの組み合わせ)を、それを処理するコントローラのアクションに割り当てます。ルートファイルはRailsアプリの入り口です。
- ルートは
config/routes.rbに定義します。 - 各ルートはURLを
controller#actionに結び付けます。 - Railsはルートを上から順に照合します。
基本的なルート
最も単純なルートは、get でパスをアクションに割り当てます。ここでは /about へのGETリクエストによって、PagesController の about アクションが呼び出されます。
Rails.application.routes.draw do
get "/about", to: "pages#about"
endHTTP動詞
各ルートでは、意図を示す動詞を指定します。
getはデータを読み取ります。postはデータを作成します。patch/putはデータを更新します。deleteはデータを削除します。
同じパスでも、動詞が異なれば別のアクションに割り当てられます。
RESTfulリソース
resources ヘルパーを使うと、モデルに対するRESTの標準ルート7つを1行で生成できます。これは、規約に基づくRailsルーティングの中心となる機能です。
Rails.application.routes.draw do
resources :articles
end7つのアクション
resources :articles は次のルートを作成します。
indexは一覧、showは1件の表示です。newはフォーム、createは保存です。editはフォーム、updateは保存です。destroyは削除です。
これで、リソースのライフサイクル全体に対応できます。
パスヘルパー
ルートは名前付きヘルパーを生成するため、URLをハードコードする必要がありません。resources :articles によって、articles_path、article_path(@article)、new_article_path、edit_article_path(@article) が提供されます。
articles_path # => "/articles"
article_path(5) # => "/articles/5"
new_article_path # => "/articles/new"
edit_article_path(5) # => "/articles/5/edit"アクションの制限
only または except を使うと、必要なルートだけを生成できます。これにより、ルーティングの対象範囲を小さく保ち、意図を明確にできます。
resources :articles, only: [:index, :show]
resources :comments, except: [:edit, :update]ネストしたリソース
リソースをネストすると、URLで所有関係を表現できます。記事に属するコメントは /articles/1/comments のようになります。ネストしたルートは article_id をコントローラに渡します。
resources :articles do
resources :comments
end
# GET /articles/1/commentsルートルート
root は、アプリのホームページである / にアクセスしたときに表示する内容を定義します。わかりやすさのため、ルートファイルの上部付近に配置してください。
Rails.application.routes.draw do
root "articles#index"
endルートの確認
rails routes を実行すると、すべてのルートについて、動詞、パス、ヘルパー、controller#actionを一覧表示できます。アプリのルーティングを理解したりデバッグしたりする最も速い方法です。
メンバールートとコレクションルート
リソースにカスタムアクションを追加できます。
memberルートは1つのレコードを対象にします。例:/articles/1/publishcollectionルートはリソースの集合を対象にします。例:/articles/search
resources :articles do
member { post :publish }
collection { get :search }
end理解度チェック
ルーティングについての理解度を確認します。
復習:ルートとリソース
RESTfulルーティングについて学びました。
- ルートは、動詞とパスの組み合わせを
controller#actionに割り当てます。 resourcesは標準ルート7つを生成します。- パスヘルパーを使うと、URLのハードコードを避けられます。
only/except、ネスト、メンバールート、コレクションルートで生成するルートをカスタマイズできます。rootはホームページを設定し、rails routesはすべてのルートを一覧表示します。
次は、これらのリクエストを処理するコントローラを作成します。
よくある質問
「ルートとリソース」レッスンは無料ですか?
はい。「ルートとリソース」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「ルートとリソース」で何を学びますか?
RESTful ルーティングです。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ルートとリソース」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。