Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
15
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Organization

Ruby on Rails resourcesメソッドのネスト例

Ruby on Rails ルーティングに関して、resourcesメソッドの整理。
resouresメソッドとは、7つのアクションへのルーティングをまとめて表記できるもの。
ルーティングを一つ一つ手打ちすることも可能だけど、resourcesメソッドはよく使う機能のルーティングがひとまとめになっていて便利。
参考文献:Rails公式ドキュメント 

resourcesメソッド使用例(ネストなし)

ネストなし、tweetsコントローラのみ。

routes.rb
Rails.application.routes.draw do
  resources :tweets
end

# の'resources :tweets'はすなわち

GET    '/tweets'          => 'tweets#index'   # 一覧画面を生成
GET    '/tweets/:id'      => 'tweets#show'    # 詳細画面を生成
GET    '/tweets/new'      => 'tweets#new'     # 登録画面を生成
POST   '/tweets/create'   => 'tweets#create'  # 登録処理
GET    '/tweets/:id/edit' => 'tweets#edit'    # 編集画面を生成
PUT    '/tweets/:id'      => 'tweets#update'  # 更新処理
DELETE '/tweets/:id'      => 'tweets#destroy' # 削除処理

createはPOST、その他PUT・GETなどは自分で編集せずとも自動的にそのように設定されている。
便利なフレームワーク。

resourcesメソッド使用例(ネストあり)

ネストあり、tweetsコントローラに加えて、commentsコントローラとusersコントローラ。

routes.rb
Rails.application.routes.draw do
  # 実際はここに devise_for :users (ログイン・ログアウト機能など)
  resources :tweets do
    resources :comments, only: [:create]
  end
  resources :users, only: [:show]

end

# の'resources :tweets 〜 only: [:show]'はすなわち

GET    '/tweets'          => 'tweets#index'   # 一覧画面を生成
GET    '/tweets/:id'      => 'tweets#show'    # 詳細画面を生成
GET    '/tweets/new'      => 'tweets#new'     # 登録画面を生成
POST   '/tweets/create'   => 'tweets#create'  # 登録処理
GET    '/tweets/:id/edit' => 'tweets#edit'    # 編集画面を生成
PUT    '/tweets/:id'      => 'tweets#update'  # 更新処理
DELETE '/tweets/:id'      => 'tweets#destroy' # 削除処理

POST   '/tweets/:id/comments' => 'comments#create' # ツイートにコメント

GET    '/users/:id'       => 'users#show'     # ユーザーのマイページを表示 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
15
Help us understand the problem. What are the problem?