Railsのルーティング設定

ルーティング(route.rb)

config/routes.rbでルーティングを設定する。
HTTPリクエストのメソッド + 相対パスを、コントローラのアクションを紐付けます。

代表的なHTTPメソッドは以下(CRUD

POST(Create) → INSERT → 生成
GET (Read) → SELECT → 取得
PUT (Update) → UPDATE → 更新
DELETE(Delete)→ DELETE → 削除    

例  get '/test/:id', to: 'test#show'

HTTPリクエストに GET /test/:idと記載があれば、testコントローラのshowアクションが呼び出されます。
その後、DB(Model)とのやり取りが必要であれば発生し、データを取得(変数格納)します。
取得した変数をセットして、ViewはHTMLファイルを作成、コントローラに返します。
コントローラはクライアントにHTMLを送信し、クライアントのブラウザに表示されます。

名前付きルート

WebブラウザでのGUI確認方法は、rails/infoで確認できます。

CLIで実際に作成して確認してみます。

rails new
rails g scaffold user name:string
rails routes

Prefix          Verb   URI Pattern  Controller#Action
users           GET             /users(.:format)        users#index
                POST            /users(.:format)            users#create
new_user        GET         /users/new(.:format)        users#new
edit_user       GET         /users/:id/edit(.:format)   users#edit
user            GET         /users/:id(.:format)        users#show
                PATCH           /users/:id(.:format)            users#update
                PUT         /users/:id(.:format)        users#update    
                DELETE          /users/:id(.:format)           users#destroy
  • <Prefix名>_path
  • <Prefix名>_url と書けます。

pathとurlの使い分け

Railsチュートリアル参照

基本的にはpath書式を使い、リダイレクトの場合のみurl書式を使うようにします。
これはHTTPの標準としては、リダイレクトのときに完全なURLが要求されるためです。ただしほとんどのブラウザでは、どちらの方法でも動作します。

URI Patternのformat

get 'photos/:id', to: 'photos#show', defaults: { format: 'jpg' }
のように、拡張子を指定可能です。

config/routes.rbで別名指定

resources :users, as: :test

Prefix           Verb             URI Pattern         Controller#Action
test_index          GET         /users(.:format)            users#index
                    POST        /users(.:format)                users#create
new_test            GET         /users/new(.:format)       users#new
edit_test           GET         /users/:id/edit(.:format)   users#edit
test                GET         /users/:id(.:format)           users#show
                    PATCH           /users/:id(.:format)            users#update
                    PUT         /users/:id(.:format)        users#update
                    DELETE          /users/:id(.:format)       users#destroy

redirect_to @userの謎

こちらで勉強させて頂きました。

明日の記事のお題にしようと思います。