SuzuBlog

webのお勉強はじめたばかりの初心者。備忘録

Rails基礎⑤ コントローラーの作成

コントローラーの作成

$ rails g controller [コントローラー名]

Controllerでは複数のデータを扱うため、コントローラー名は複数形、頭文字は大文字にすること。

主に、controllerディレクトリにxxx_controller、viewディレクトリに新しいディレクトリ、テスト用のファイルなどが生成される。

ルーティングの設定

どのURLにアクセスされたときに、controllerのどのメソッドを実行するかを設定していく作業のこと。

config/routes.rbに記述していく。

一般的な処理を一気に設定したい場合

resources :名称[複]

なので、

Rails.application.routes.draw do
  resources :コントローラー名
end

でOK。

これで、 index,show,new,create,edit,update,delete の7種類のアクションが一気に定義することができる。

特定のルーティングのみを指定したい場合、

Rails.application.routes.draw do
  resources :コントローラー名, only: [:index, :show]
end

のようにonlyを使用する。

resource

resources とはまた別物となる。 indexアクションが定義されない、URI Pattersにidが含まれなくなる、といった違いがある。

Rails.application.routes.draw do
  resource :名称[単]
end

ルーティングの確認

$ rails routes

で一覧を確認できる。

Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index

だとすると、「/postsでgetでアクセスしてきたら、postsコントローラーのindexアクションを実行」という意味。

参考

qiita.com

controllerにアクションを記述する

app/controller/名称_controllerに記述していく。

メソッドの形で記述していく。 アクション名=メソッド名なので、アクションを作成する場合はアクション名のメソッドを定義する必要がある。

アクションを表すメソッドはpublicで作成する必要がある。(Rubyはデフォルトがpublicとなっている)

Postsを作成日時の新しい順に並べてすべて取得したい場合は以下のように記述する。

def index
  @posts = Post.all.order(created_at: 'desc')
end