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', ...}
カテゴリー:技術情報メモ