概要
RailsガイドやRailsのリファレンスにて、明言はされてないものの redirect_to の引数としては _path でなく _url が利用されています。
- https://guides.rubyonrails.org/v5.2/action_controller_overview.html#the-flash
- https://api.rubyonrails.org/v5.2.2/classes/ActionController/Redirecting.html#method-i-redirect_to
ですが、なぜ _path でなく _url を利用しているのか、これらのドキュメント内では充分な説明がなされてません(見逃してるかもですが)。
調べたところ、以下の記事で解説がされていました。
「RailsによるアジャイルWebアプリケーション開発 第4版のp.120、David曰く」で解説されてます。
HTTPの302リダイレクトの仕様上、絶対パスを使うのが妥当
ふむふむなるほど、ということで RFC を読もうとしましたが断念したため、RFCを解説している記事を探しました。
HTTP1.1のLocationヘッダは、絶対URLでないとRFC違反
なるほどですね。
追記
コメントで補足いただきました
thx! @znz
実際はほとんどのブラウザーでサポートされていたので RFC 7231 で緩和されて相対 URL でも OK になっています。
https://en.wikipedia.org/wiki/HTTP_location