2.2 リソースでないルーティング
パラメータなしルーティングを定義する
リソースを利用せずに任意のURLをアクションにマッピングすることも可能です。その際、リソースのような自動的なマッピングは行われない為、個別にアクションを指定する必要があります。
パラメータを含まないルーティング
Rails.application.routes.draw do
get 'settings', to: 'pages#settings'
end
生成されるルーティングは以下になります。
メソッド | パス | コントローラとアクション | ヘルパー |
---|---|---|---|
GET | /settings |
pages#index | settings_path |
パラメータありルーティングを定義する
定義するルーティングに:
を指定するとパラメータとして判断されparams
にて利用することができます。
パラメータを含むルーティング
Rails.application.routes.draw do
get 'posts/:id', to: 'posts#show'
end
生成されるルーティングは以下になります。
メソッド | パス | コントローラとアクション | ヘルパー |
---|---|---|---|
GET | /posts/:id |
posts#show |
ルートのアクションを設定する
root
はURLの/
に設定するルーティングです。root
は全てのルーティングの始まりなので、routes.rb
の最初に記述してください。
また、設定できるHTTPメソッドはGET
のみです。
/
のルーティング
Rails.application.routes.draw do
root 'posts#index'
end
ルーティングの名前を変更する
:as
オプションを使用することでルーティングに名前をつけることができます。
register
ルーティングにsignup
という名前をつける
Rails.application.routes.draw do
get 'register', to: 'users#create', as: :signup
end
生成されるルーティングは以下になります。
メソッド | パス | コントローラとアクション | ヘルパー |
---|---|---|---|
GET | /register |
users#create | signup_path |
パラメータの制限をする
:constraints
オプションを利用することで、正規表現による制限が可能になります。
数字のみ許可
Rails.application.routes.draw do
get 'posts/:id', to: 'posts#show', constraints: { id: /[0-9]+/ }
end