ActionView::Helpers::UrlHelper
def link_to(name = nil, options = nil, html_options = nil, &block)

説明

<a> を作ります。

引数

値を変えると、ERB と HTML が変わります。

= nil
<a> の中身にします。中身はエスケープします。渡す値によって、次のように変わります。
  • デフォルト(nil):href と同じ文字列を中身にします。options だけを渡すときも、ここに nil を書きます。
  • モデルのオブジェクト:options を渡さなければ、そのモデルの URL を href にし、to_s を中身にします。link_to(article, class: "x") のように Hash を続けると、それが options になるので、モデルの URL になりません。
href 属性の値にする URL です。url_for に渡すので、渡す値によって、次のように変わります。
  • 文字列:そのまま href 属性の値にします。article_path(1) のようなルートのヘルパーも、URL の文字列を返すので同じです。
  • モデルのオブジェクト:ルーティングから、そのオブジェクトの URL を作ります。
  • Hash:ルーティングから URL を作ります({ controller: "articles", action: "index" } なら /articles)。
  • :back:リクエストに Referer があればその URL、なければ javascript:history.back() にします。このサイトでは、描画の API へのリクエストの Referer がこのページなので、このページの URL になります。
html_options= {}
渡した値を data-method 属性の値にします。:get 以外なら、rel="nofollow" も追加します。rel を渡したときは、その後ろに追加します。data-method は Rails UJS が読む HTML 属性で、Rails UJS を入れていないアプリ(Rails 7 以降の標準)では何もしません。
true にすると、data-remote="true" を追加します。Rails UJS を入れていないアプリ(Rails 7 以降の標準)では、この HTML 属性は何もしません。
ヘルパー共通の options

Rails はどのヘルパーでも、これらの options を同じように処理します。HTML の仕様で <a> に使えないものや、使う場面が少ないとこのサイトで判断したものは、ここでは省いています。

すべてのヘルパー共通

{active: true, hidden: false}
Hash を渡すと、値が false と nil 以外のキーを空白でつなぎます。配列を渡すと、nil、false、空の文字列(空白だけの文字列も)を外して、空白でつなぎます。
{controller: "tags", tags_suggestions_value: ["ruby", "rails"]}
Hash を渡すと、キーの _ を - にして、data-* 属性を追加します。値に配列や Hash を渡すと、JSON の文字列にします。
{describedby: ["name_help", "name_error"], invalid: false}
:data と同じく、aria-* 属性を追加します。値が配列なら、nil と空の文字列を外して、空白でつなぎます(何も残らなければ、追加しません)。値が Hash なら、値が false と nil 以外のキーを空白でつなぎます。
ここにない options は、<a> の HTML 属性になります。値が nil なら、その HTML 属性は追加しません。

ERB

直前との違い: 追加 削除 変更


          

HTML


          

プレビュー