rails routesの見方
resourcesメソッドでルーティングを 定義した場合、アクションのルーティングを確認することができません。 そんなときは”rails routes”を使用します。
(ブラウザ上で"http://localhost:3000/rails/info"でみれます。)
Prefix Verb URI Pattern Controller#Action new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit user_password PATCH /users/password(.:format) devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit user_registration PATCH /users(.:format) devise/registrations#update PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy POST /users(.:format) devise/registrations#create root GET / items#index item_orders GET /items/:item_id/orders(.:format) orders#index POST /items/:item_id/orders(.:format) orders#create items GET /items(.:format) items#index POST /items(.:format) items#create new_item GET /items/new(.:format) items#new edit_item GET /items/:id/edit(.:format) items#edit item GET /items/:id(.:format) items#show PATCH /items/:id(.:format) items#update PUT /items/:id(.:format) items#update DELETE /items/:id(.:format) items#destroy |
"routes.rb"で定義したルーティングの出力結果の意味は一番上の項目にあります。
Prefix
Prefixはパスが代入されている変数のようなものです。
Prefixを使うときは末尾に_pathと追記します。
prefixを確認するとルートパスを表す/というパスはrootになっています。
なのでlink_toのパスを指定する場所には_pathをつけたroot_pathを書いてあげれば/で指定した記述と同じになります。
パスにidが入っているときはidの情報が入っているインスタンスを引数として渡してあげることにより指定ができます。
例えばusersコントローラーのshowアクションを動かすときは通常のパスだとusers/"ユーザーのid"になりますが、Prefixを使って書くとuser_path(@user)のような記述になります。
@userはコントローラーで@user = User.find(params[:id])などで記述してあげれば@userの中にはそのユーザーのidも含まれているのでuser_pathの引数として指定できます。
Verb
HTTPメソッドを表します。
URI Patternのパスにどのhttpリクエストでアクセスするかを示しています
get: リソースを取得する。サイトを閲覧する時に利用する。
post: リソースを保存する。
delete: リソースを削除する。
patch: リソースを更新する。
URI Pattern
ルーティングのパスを表します
Controller#Action
httpリクエストでパスが送られた際に処理が行われるコントローラとアクションを表します。
コントローラ名#アクション名です
CRUD
C(Create):生成
R(Read):読み取り
U(Update):更新
D(Delete): 削除