web-dev-qa-db-ja.com

railsでルートを使用しているときの_urlと_pathの違いは何ですか?

routes.rbのような名前を使用してmap.some_linkでルートを定義する場合、リンクは2つの方法で使用できます-some_link_urlsome_link_path

  • 2つの違いは何ですか?
  • どちらを使用する方が安全ですか?
68
MohamedSanaulla

私は同じ質問をして、 私のブログでこれについての小さな投稿 を書きました。

その理由をここに要約します(私はこれをフォーラムで見つけました):

* _pathは、ahrefが現在のURLに暗黙的にリンクされているため、ビュー用です。そのため、何度も繰り返すのはバイトの無駄です。ただし、コントローラーでは、HTTP仕様では3xxリダイレクトのLocation:ヘッダーが完全なURLであることが義務付けられているため、redirect_toには* _urlが必要です。

別の説明があります これは、非SSLサイトからSSLサイトにリンクするときに絶対URIを使用する必要があるかどうかに依存することを示しています。

私がこれまで読んだことは、それらのどれもが他のものより安全であることを示唆していません。本当に「適切な」使用法になります。

82
Petros

pathは相対的ですが、urlは絶対です。

76
ponzao

「user」というリソースの違いの例:

users_url # => http://localhost:3000/users
users_path  # => /users
37
Jason

現代のブラウザは相対リダイレクトをうまく処理する であることを除いて、Petrosと同じ答え。 (私は彼の答えにコメントしますが、まだできません。)

2
Ian Lotinsky

渡されたすべてのデータを公開しない場合は、「/ login」のような相対URLを生成しますが、_pathは「 http:// localhost:3000/login '。同じことについていつか見つけたこのブログ投稿を参照してください。 _ urlが_pathよりも優れている場合

1
Alok Swain

_urlはパス全体を提供します。ドメイン名とプロトコルが含まれているため、たとえば、電子メールを送信したり、別のドメインにリダイレクトするなど。

_pathは、ドメイン、プロトコルなどなしで「/」の後にあるパスを返します。したがって、ドメインの詳細を必要としない場所で、時々使用することができます。

1
Radhika