勉強メモ

主にプログラミングの勉強メモ

【Rails】 _url _path メソッドの使い分け、メソッド名の調べ方

Rails でコントローラのアクションにアクセスするときに使う url, path メソッドについてのメモ。

_url メソッド
  • 完全な url を返す。
  • リダイレクトするときに使用する。
_path メソッド
  • ルートディレクトリからの url を返す。
  • リダイレクト以外で基本的にはこちらを使用する。
メソッド名がわからないとき

rails routes コマンド使い PREFIX を見る。

rails routes
                 Prefix Verb   URI Pattern                             Controller#Action
    password_resets_new GET    /password_resets/new(.:format)          password_resets#new
   password_resets_edit GET    /password_resets/edit(.:format)         password_resets#edit
           sessions_new GET    /sessions/new(.:format)                 sessions#new
              users_new GET    /users/new(.:format)                    users#new
                   root GET    /                                       static_pages#home
                   help GET    /help(.:format)                         static_pages#help
                  about GET    /about(.:format)                        static_pages#about
                contact GET    /contact(.:format)                      static_pages#contact
                 signup GET    /signup(.:format)                       users#new
                        POST   /signup(.:format)                       users#create
                  login GET    /login(.:format)                        sessions#new
                        POST   /login(.:format)                        sessions#create
                 logout DELETE /logout(.:format)                       sessions#destroy
                  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
edit_account_activation GET    /account_activations/:id/edit(.:format) account_activations#edit
        password_resets POST   /password_resets(.:format)              password_resets#create
     new_password_reset GET    /password_resets/new(.:format)          password_resets#new
    edit_password_reset GET    /password_resets/:id/edit(.:format)     password_resets#edit
         password_reset PATCH  /password_resets/:id(.:format)          password_resets#update
                        PUT    /password_resets/:id(.:format)          password_resets#update

メソッド名は <PREFIX>_url(path) となる。 例えば、password_resets#new に対する url を生成するメソッドは password_resets_new_url または new_password_reset_url と書ける。