web-dev-qa-db-ja.com

Rails URLヘルパーがhttpsのURLを自動的に出力するようにする

私はhttpとhttpsをたくさん混ぜたサイトを開発しています-リンクがルートに適切なプロトコルを使用するための最良/最も簡単な方法は何ですか-ルートファイルで指定できますか?

Rails 3.に次のルートがあるとします。

「/ test」に一致=> "test#index"、:as =>:test、:constraints => {:protocol => 'https'}

Httpページでtest_url()を使用すると、 http://domain.com/test が出力されます。代わりに https://domain.com/test が必要です。

私はtest_url(:secure => true)を使用できることを知っていますが、それは重複ロジックです。

http://domain.com/testhttps://domain.com/test に変更できることはわかっていますが、これは追加のリダイレクトであり、フォームで失敗します投稿。

アイデア?

32
Joe Van Dyk
2
Joe Van Dyk

HttpsのURLにはtest_url(:protocol => 'https')を使用します。

25
Krishna Srihari

試していませんが、これをApplicationControllerに追加してください:

def default_url_options(options={})
 { :secure => true }
end 
19
apneadiving
def default_url_options(options={})
 { :protocol => "https" }
end
6
i_emmanuel

Rails 3.2の場合、@ apneadivingの回答を組み合わせて使用​​しました。以下のコードを私のApplicationControllerに追加します

def default_url_options(options={})
  options.merge{ :protocol => "https" }
end
2
Mark Ellul

Rails 3 SSLルーティングはhttpsからhttpにリダイレクトします この質問にかなりよく答えます。要するに、それを行うための素晴らしい方法はありません。以下を送信しましたRailsバグ: https://github.com/Rails/rails/issues/3571

1
Joe Van Dyk