環境
- AWS cloud9 EC2
- ruby 2.6.3
- Rails 5.2.4.3
アクションのパスを作る方法
ルーティングの確認
rails routesを実行する
Terminal
vocstartsoft:~/environment/***** $ rails routes
Prefix Verb URI Pattern
books GET /books(.:format) books#index
POST /books(.:format) books#create
new_book GET /books/new(.:format) books#new
edit_book GET /books/:id/edit(.:format) books#edit
book GET /books/:id(.:format) books#show
PATCH /books/:id(.:format) books#update
PUT /books/:id(.:format) books#update
DELETE /books/:id(.:format) books#destroy
アクションのパスを作成
1. 一番右の列を見る
飛びたいアクションを確認する
(例:book#edit)
2.一番左の列を見る(Prefix)
1で確認した行のPrefixの列を確認する
※もし空白の場合は、直近の上のものを使用する。
(例:edit_book)
3._pathをつける
2で確認したものに _path をつける。
(例:edit_book_path)
4.URI Patternの列を見る
URI Patternの列を見て :id があるか確認する。
-
idがなかったら
3で作成したものがパスになる -
idがあったら
3で作成したものに引数をしてして:idを指定する
(例:edit_book_path(@book.id))
5.HTTPメソッドを確認する
link_toなどではデフォルトでGETが行われるようになっている。
=>そのため、GET以外の場合は指定する必要がある。
- 指定方法
pathの後に、, method: :httpメソッドを付け加える
(例:book_path(@book.id), method: :delete)
何故:idが必要なのか
表示したViewページが:idによって違う内容にする必要があるかどうかを考える
-
:idがないbooks#indexbooks#newなどは、一覧の表示や新規作成のため、特定の:idを必要としない -
:idがあるbooks#editbooks#showなどは、特定の:idについての表示をする必要があるため、表示させたい:idを引数として指定する