Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【初心者向け】【Rails】routes.rbのresourcesとresourceの違いとは?

f:id:mTakata:20200523184811j:plain

こんにちは。

当ページにアクセスして下さり、ありがとうございます。

 

この記事は、プログラミング言語「Ruby」のフレームワーク「Rails」についての記事になります。

 

コントローラーからビューやモデルとやりとりする前に、まずルーティングを設定するという事はRailを学習してきたあなたなら、お分かりかと思います。

 

そのルーティングについて、例題を用いて解説しますね。

【目次】

例題

routes.rbでは、resourcesを使ってルーティングを定義します。

 

そして使うのが、「resources」というコード。

 

しかし、resourcesの代わりにresource(単数形)を使ってルーティングを定義することもできます。

 

resource(単数系)を利用した際に生成されるルーティングについて、resourcesを用いた場合との主な違いを2点、説明してください。 

模範回答

1.idつきのパスが生成されません

2. indexアクション用のルーティングが生成されない

解説

上記2つの回答について、解説していきます。

 

まず前提としてresources(resource)とは、

 

データに対するCRUD処理を行うためのルーティング

 

上記です。 ちなみにCRUD(クラッドと呼びます)とは、対象データに対する、

Create・・・登録

Read・・・参照

Update・・・更新

Delete・・・削除

上記4つ、英単語の頭文字をとったものです。

 

そしてRailsでは、上記4つの処理を行うために

index・・・全てのデータを一覧表示

 

new・・・データを登録する画面(フォーム)を表示

 

create・・・データを1つ登録

 

edit・・・対象データの情報を更新する画面を表示

 

update・・・対象データを更新

 

show・・・対象データを表示

 

destory・・・対象データを削除

7つのメソッドを使います。

 

詳しくはこちらの記事にも記載されています。

railsguides.jp

1.idつきのパスが生成されません

show, editアクションの実行に、idが必要ない場合に有効となります。

 

2. indexアクション用のルーティングが生成されない

resourcesの場合

生成されるルーティング

```
Prefix   Verb URI Pattern Controller#Action
posts   GET /posts(.:format) posts#index
     POST /posts(.:format) posts#create
new_post  GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post    GET /posts/:id(.:format) posts#show
     PATCH /posts/:id(.:format) posts#update
     PUT /posts/:id(.:format) posts#update
     DELETE /posts/:id(.:format) posts#destroy ```

 

resourceの場合

生成されるルーティング 

```
Prefix Verb URI Pattern Controller#Action
new_posts GET /posts/new(.:format) posts#new
edit_posts GET /posts/edit(.:format) posts#edit
posts GET /posts(.:format) posts#show
PATCH /posts(.:format) posts#update
PUT /posts(.:format) posts#update
DELETE /posts(.:format) posts#destroy
POST /posts(.:format) posts#create
```

まとめ

railsを勉強し始めたばかりのあなたでも、上記のルーティングは避けて通ることはできないです。

 

ですが、アプリを作っていく上で必ず設定しますので、アプリ作成の経験を積んでいく内に自然に覚えていきます。

 

プログラミングは、ぶっちゃけ暗記ではないです。

 

そこだけでも知っておいて頂けたらと思います。

 

プログラミングは楽しいです!

 

以上となります、参考になれば幸いです。

最後まで読んで頂き、ありがとうございました。