【Ruby on Rails】link_toメソッドの使い方。URLの指定方法まとめ
Railsのviewファイルに動的なリンクの設置はRailsのビルドインヘルパーの一つである、link_toメソッドを使う。
<%= link_to 'アンカーテキスト', パスの指定 %>
パスの指定方法は複数ある。
- コントローラー名で指定(アクション指定なし)
- コントローラーとアクションを指定
- コントローラーとアクションとidを指定
- pathで指定
- pathで指定(idを指定)
- URLで指定
- パスを指定しない場合
- パスとアンカーテキストを指定しない場合
- 実際の記述例
### 1. コントローラー名で指定(アクション指定なし) コントローラー名で指定する場合はオプションに下記を設置する。
controller: 'コントローラー名'
アクションの記載をしない場合はindexが指定される。
「コントローラー名#index」に該当するページへのリンクが設置される。
`<%= link_to 'アンカーテキスト', controller: 'コントローラー名' %>`
### 2. コントローラーとアクションを指定
controller: 'コントローラー名', action: 'アクション名'
指定した「コントローラー名#アクション名」に該当するページへのリンクが設置される。
`<%= link_to 'アンカーテキスト', controller: 'コントローラー名', action: 'アクション名' %>`
### 3. コントローラーとアクションとidを指定 `controller: 'コントローラー名', action: 'アクション名', id: id番号`
指定した「コントローラー名#アクション名」の該当するページの末尾に指定したid番号がついたページへのリンクが設置される。
<%= link_to 'アンカーテキスト', controller: 'コントローラー名', action: 'アクション名', id: プロパティ名.id %>`
id番号は整数でも指定可能
┗例 id: 1
### 4. pathで指定 ルーティングにはパス(末尾「_path」)が設定されている。このパスを指定することで該当ページへのリンクを設置できる。
[パスprefix]_path
パスはコマンドrails routes
で確認できる。
Prefix | Verb | URI Pattern | Controller#Action |
---|---|---|---|
articles_index | GET | /articles/index(.:format) | articles#index |
<%= link_to 'アンカーテキスト', [prefix]_path %>`
### 5. pathで指定(idを指定) pathを指定した後にカッコでidを格納した変数を記述すると、指定したidに該当するページへのリンクが作成される。
[パスprefix]_path(id番号)
<%= link_to 'アンカーテキスト', [prefix]_path(id番号) %>`
### 6. URLで指定
URLのフルパスで指定することも可能。
静的
<%= link_to 'アンカーテキスト', 'URL' %>`
変数展開を使うことで動的にURLを指定することも可能。
・ダブルクオテーションで囲む。
・#{ }
で記述する。
動的
<%= link_to 'アンカーテキスト', "https://~/#{変数や式}" %>`
## 7. パスを指定しない場合 パスを指定しない場合、 **現在のコントローラーのアクション**へのリンクが設置される。(リロード)
<%= link_to 'アンカーテキスト' %>`
## 8. パスとアンカーテキストを指定しない場合 link_toのみで、パスとアンカーテキストを指定しない場合、
▼パス
「現在のコントローラーのアクション」(リロード)
▼アンカーテキスト
「コントローラー名/アクション名/」
となる。
<%= link_to %>`
## 実際の記述例
<%= link_to '一覧ページ', controller: 'articles' %><br>
<%= link_to '編集ページ', controller: 'articles', action: 'new' %><br>
<%= link_to 'id:1の詳細ページ', controller: 'articles', action: 'show', id: 1 %><br>
<%= link_to 'テックアカデミー(静的)', "https://techacademy.jp/magazine/7286" %><br>
<% number = '7268' %>
<%= link_to 'テックアカデミー(動的)', "https://techacademy.jp/magazine/#{number}" %><br>
<%= link_to %><br>
<%= link_to 'パス指定なし' %><br>
以上。