後へ      Topへ      次へ

ルーティング

「どの URL にアクセスされたら、どのコントローラのどのアクションを呼ぶか」
を決める仕組みです。

\config\routes.rb で設定します。

REST

REST とは、
REpresentational State Transfer の略で、 「Web アプリを、統一されたルールで設計する」
という考え方(設計思想) の一つです。

REST に忠実に従っている事を RESTful と言います。
Rails はこの RESTful な設計を 前提として作られたフレームワークです。
WEBアプリにアクセスする際に使用する URL も RESTful 前提になります。

細かな話は割愛しますが、
User での一例を挙げると、

動作 HTTP ルーティング
一覧表示 GET /users
新規追加 POST /users
詳細表示 GET /users/1
編集画面 GET /users/1/edit
更新 PATCH /users/1
削除 DELETE /users/1

ルーティング中で 1 とあるのは、対象データの ID が 1 の場合。

ブラウザで、User の一覧を見たければ、
http://localhost:3000/users
と入力します。

ブラウザ操作では、基本 HTTP GET しか使えないので、
POST、PATCH、DELETE は View のコードで設定します。
詳細は割愛します。  

 

routes.rb

実際に呼び先を指定するファイルです。
多くは、rails generate 系コマンドを実行した際に自動で設定されますが、
独自アクションを追加する際には、手で編集します。

resources :users
と書けば、User に関する CRUD の基本部分を網羅してくれます。

独自アクション GET additional1 を追加する場合は、

  resources :users do
    collection do
      get "additional1"
    end
  end

と書きます。
http://localhost:3000/users/additional1
でアクセスできます。

ID を指定する GET additional2 アクションの場合は、

  resources :users do
    member  do
      get "additional2"
    end
  end

と書きます。
http://localhost:3000/users/1/additional2
といった形式でアクセスできます。

コード中の URL 表記

コード中、指定の URL にジャンプさせたい事があります。
<a href="http://localhost:3000/users/additional1">additional1</a>
みたいに直に書いてしまうと、
本番環境などで localhost:3000 部分が変わってしまう場合に困ります。
Rails では、routes.rb にルーティングを書くと、
自動的にそのルーティングに対応する URL、PATH を生成してくれます。
例えば、
一覧表示の /users であれば、

http://localhost:3000/users/additional1なら、
additional1_users_path、additional1_users_url ですし、
http://localhost:3000/users/1/additional2なら
additional2_user_path(1)、additional2_user_url(1) になります。

_user_ と _users_、単数形と複数形があることに留意ください。
対象データが1つの場合は _user_、
対象データが複数の場合は _users_、
となります。
このように、Rails では表記上でも単複の違いが明確に区別されます。

後へ      Topへ      次へ