ActionView::RoutingUrlFor
def url_for(options = nil)

説明

URL の文字列(初めはパスだけ)を返します。link_to や button_to などは、渡された URL をこれで作ります。

描画するときの今のリクエストは、ERB の欄の上にある GET /articles?page=2 です(このサイトで決めたもの)。Hash のほかに、次のものも渡せます。
  • 文字列:そのまま返します。
  • nil:今のリクエストのパス(/articles)を返します。クエリ文字列は付けません。
  • モデルのオブジェクト(Article.find(1))、配列([Article.find(1), comment])、Symbol(:articles)、クラス(Article):ルーティングから、名前の付いたルートのヘルパー(article_path など)を探して呼びます。
  • :back:リクエストに Referer があればその URL、なければ javascript:history.back() を返します。

引数

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

options= {}
"articles"
URL を作るコントローラーの名前です。デフォルトは今のリクエストのコントローラー(articles)です。
"show"
URL を作るアクションの名前です。デフォルトは今のリクエストのアクション(index)です。ただ、controller を今のリクエストと違うものにしたときは、index です。
1
ルートの :id の部分にします(/articles/1)。controller と action が articles#show のときに外すと、:id がないので合うルートがなく、ActionController::UrlGenerationError になります。:id のないルート(articles#index)では、クエリ文字列にします(/articles?id=1)。
ルートの (.:format) の部分にします(/articles/1.json)。
"comments"
# のあとに付けます。
{page: "3"}
Hash のキーと値を、クエリ文字列にして付けます(?page=3)。ここにない options と違い、ルートの部分(:id など)と同じ名前のキーも、ルートの部分には使わずにクエリ文字列にします。ここにない options と同じ名前のキーがあれば、こちらの値を使います。
true にすると、パスの最後に / を付けます(/articles/1/)。format も渡したときは、付けません。
"/blog"
パスの前に付けます(/blog/articles/1)。アプリを /blog のようなパスの下に置いたときに使います。デフォルトは今のリクエストのもの(アプリを置いたパス。このサイトでは空)で、渡すとそれと置き換えます。
false にすると、ホストを付けた URL にします(http://…/articles/1)。host を渡さないときのホストは、今のリクエストのホスト(このサイトでは、このページのホスト)です。デフォルトは、host を渡したときだけ false で、ほかのときは true です。
"example.com"
URL に付けるホストです。only_path を渡さないときは、これを渡すと、ホストを付けた URL にします。example.com:3000 や https://example.com と書いても、ポートと https:// は使いません(今のリクエストのものを使います)。ポートと形は、port と protocol で渡します。
"https"
ホストを付けた URL の、:// の前の部分です(https://…)。https: や https:// と書いても同じです。"//" か false なら、//example.com/… にします。デフォルトは今のリクエストのもの(http か https)です。パスだけを返すとき(host も only_path: false も渡さないとき)は、使いません。
8080
ホストを付けた URL の、ホストのあとの :8080 の部分です。デフォルトは今のリクエストのポート(80 と 443 なら付けない)です。パスだけを返すときは、使いません。
"www"
ホストのサブドメインを、渡した値に置き換えます(blog.example.com なら www.example.com)。サブドメインは、ホストを . で区切ったうち、後ろの tld_length + 1 個(初めは 2 個)より前の部分です。パスだけを返すときは、使いません。
"example.org"
ホストの、サブドメインより後ろの部分を、渡した値に置き換えます(blog.example.com なら blog.example.org)。パスだけを返すときは、使いません。
"alice"
password も渡すと、ホストの前に alice:secret@ を付けます。片方だけなら、ここにない options と同じく、クエリ文字列にします。パスだけを返すときは、両方を渡しても使いません。
"secret"
user と一緒に渡すと、ホストの前に alice:secret@ を付けます。片方だけなら、ここにない options と同じく、クエリ文字列にします。パスだけを返すときは、両方を渡しても使いません。
ここにない options は、ルートの部分(:id など)にないキーなら、クエリ文字列にします(page: 2 なら ?page=2)。ただ、tld_length(subdomain と domain で、ホストの最後のいくつを、トップレベルドメインとみなすか。初めは 1)、original_script_name、path_params、use_route は、URL を作るのに使い、クエリ文字列にしません。

ERB

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

今のリクエスト
GET /articles?page=2

          

HTML