こんにちは!
今回はRailsでのlink_toの使い方についてまとめます。
link_to
メソッドの使用例
<%= link_to "example.com", "http://example.com" %> <%= link_to "一覧", members_path %> <%= link_to "一覧", :members %> <%= link_to "編集", [:edit, member] %> <%= link_to "削除”, member, method: :delete, data: { confirm: "本当に削除しますか?" } %> # いろんな書き方があってよくわからない
- よくわからないのはパスの指定の部分
- パスの指定は
url_for
というメソッドが呼び出されているurl_for
が与えられた引数からパスを作成している
url_for
メソッドの引数のパターン
URL
- 例:
"http://example.com"
"http://example.com"
パス
- 例:
/members/123/edit
/members/123/edit
ヘルパーメソッド(resourcesメソッドで指定した場合)
- 例:
members_path
/members
- 例:
edit_member_path(@member)
/members/:id/edit
- 例:
:members
/members
- 例:
:new_members
/members/new
オブジェクト
- 例:
@member
/members/:id
- 例:
[:edit, @member]
/members/:id/edit
resources: members
とした場合に自動的に作られるヘルパーメソッド
アクション | ヘルパーメソッド | パス |
---|---|---|
index | members_path , :members | /members |
show | member_path(member) | /members/:id |
new | new_member_path, :new_member | /members/new |
edit | edit_member_path(member) | /members/:id/edit |
update | member_path(member) | /members/:id |
destroy | member_path(member) | /members/:id |
ポイント
- URLとパスを直接指定するのは直感的に理解できるので、問題はヘルパーメソッドとオブジェクト
ヘルパーメソッドのポイント
- ヘルパーメソッドは
routes.rb
でresources: members
などの指定を行った時に、自動的に7つのアクション分作られる - また、
_path
の部分は省略できるので、members_path
は:members
と表記できる- idの指定が必要ないアクションに限る
- edit, newのように個別のid指定が必要な場合は、引数にモデルオブジェクトを渡す
- モデルオブジェクトのidが使用される
オブジェクトのポイント
- オブジェクト(モデルオブジェクト)は、
/member/:id
のように変換される [:アクション名, オブジェクト]
という表記が可能
link_to
メソッドでHTTPメソッドを指定する方法
- destroyとupdateのように、同じパスを使用してHTTPメソッドでアクションを使い分ける必要がある時
method:
で指定- 例:
link_to "削除", @member, method: :delete
- destroyアクション
- 例:
link_to "更新", @member, method: :patch
- updateアクション
- 例:
おわりに
今回はlink_toメソッドについてまとめました。昨日と今日のまとめで、フォームとリンクについて大分知識が深まった気がします。CRUDについても自分が書けるようになりつつあるので、少しずつですが前進しています!
45/100