Ruby On Railsのurl_forヘルパでHTTP以外を利用
2007.05.22
Rails の url_for ヘルパで、HTTP 以外のスキームへの URL の作り方。
link_to, start_form 等も url_for に渡してるだけなので、同様。
単に :protocol を設定すればいいのだけれど、 :only_path のデフォルトが true だったりします。 (cf. action_view/helpers/url_helper.rb の url_for)
ので、セットで指定しないとハマるというおはなし。
{:only_path => false, :protocol => 'https://', ...}
:protocol といいつつ、スキームと区切記号を指定するのにも注意。
script/console から app.url_for で呼んだ場合には :only_path のデフォルトが false だったりするのも混乱に拍車をかけてたり?
% script/console Loading development environment. >> app.url_for({:protocol => 'foo://', :controller => :bar}) => "foo://www.example.com/bar" >>
なお、ホスト名は @request.host_with_port がデフォルトなので、 別のホストやポートを指定したい場合は :host で指定します。 (cf. action_controller/url_rewriter.rb の rewreite_url)
{:only_path => false, :host => 'host.example.org:8080', ...}
カテゴリー:技術情報メモ