AR삽질러

Rails 一日一つメソッド (Day16) resourcesメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day16) resourcesメソッド

아랑팡팡 2024. 1. 5. 20:39
728x90

 

Rails 一日一つメソッド (Day16) resourcesメソッド

 

resourcesメソッドとは

 - railsで定義されている7つのアクションのルーチィングを自動で作成するメソッドで、簡単にルーチィングを作成することができる。

 - resourcesメソッドは、ルーチィングを記述する routes.rbの中で使用する。

Rails.application.routes.draw do
	resources :Controoler名
end

 

resourcesメソッド使い方

 - railsで定義されている7つのメソッド

Action名 役割
index リソースの一覧を表紙される
show リソースの詳細を表紙する
new 投稿フォームを表紙させる
create リソースを追加する
edit 更新フォームを表紙させる
update リソースを更新する
destroy リソースを削除する

 

routes.rb

Rails.application.routes.draw do
	get 'users', to: 'users#index'
    get 'users/:id', to: 'users#show'
    get 'users/new', to: 'users#new'
    post 'users', to: 'users#create'
    get 'users/:id/edit', to: 'users#edit'
    patch 'users/:id', to: 'users#update'
    delete 'users/:id', to: 'users#destroy'
end

 


 RESTとは

 - Representational State Transferの略で、ユーザーがあらかじめ決められたリソースを定義し、それにそってアクションとhttpメソッドを関連つける考え方。

 - どのアプリでも統一された書き方でコードを書いて可読性を高める。

 

 


resourcesの使い方

 - reourcesメソッドはルーチィングを記述する routes.rbの中で使用する。

Rails.application.routes.draw do
	resource :Controller名
end
Rails.application.routes.draw do
	resources :users
end

 

複数のControllerのルーチィングを一行で定義することができる。

Rails.application.routes.draw do
	resources :Controller名, :Controller名
end

 


onlyとexcept

 - resourcesメソッドを使用した時、indexアクションとshowアクションだけを指定したい時は、onlyやexceptを使う。

Rails.application.routes.draw do
	resources :users, only: [:index, :show]
end
Rails.application.routes.draw do
	resources :users, except: [:new, :create, :edit, :update, :destroy]
end

 


prefixとは?

 - railsで特定のラウトに使う名前を表す。

 - 名前はURLヘルパーを作成する際に使用され、これによりビューやコントローラーで該当ルートを簡単に参照できるようになる。

 1) URLヘルパー生成

 - Prefixを使ってアプリケーションのラウトに名前をつけると、名前を持っているURLが自動に生成される。

 - 例)prefixが new_userの場合、new_user_pathと new_user_urlのようなURLヘルパーが生成される。

Rails.application.routes.draw do 
	get 'user', to: 'users#show'
end
<%= link_to 'View Profile', profile_path %>

このラウトに名前は userになり、user_pathまたは user_urlのようなURLヘルパーを使うことがでくる。

 


ネストを定義する

ルーチィングがネストするときも resourcesメソッドを使うことができる。

resources :users do
	resources :questions
end

 


7つのアクション以外のルーチィング設計

 - railsで定義された7つのアクション以外のアクションを追加する場合はルーチィングの中で memberと collectionを使用する。

 

 1) member

memberは idで指定した個々のリソースに対するアクションを定義する。

ユーザーのレビューが見れるreviewアクションを追加したいとき、レビューは必ず1人のユーザーがしている

/users/ユーザーのid/review
resources :users do
	member do
    	get 'review'
    end
end

 

 2) collection

collectionはリソース全体に対するアクションを定義する。

resources :users do
	collection do
    	get 'show'
    end
end

 

 

 

 

728x90
반응형
LIST