私は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/test を https://domain.com/test に変更できることはわかっていますが、これは追加のリダイレクトであり、フォームで失敗します投稿。
アイデア?
HttpsのURLにはtest_url(:protocol => 'https')
を使用します。
試していませんが、これをApplicationController
に追加してください:
def default_url_options(options={})
{ :secure => true }
end
def default_url_options(options={})
{ :protocol => "https" }
end
Rails 3.2の場合、@ apneadivingの回答を組み合わせて使用しました。以下のコードを私のApplicationControllerに追加します
def default_url_options(options={})
options.merge{ :protocol => "https" }
end
Rails 3 SSLルーティングはhttpsからhttpにリダイレクトします この質問にかなりよく答えます。要するに、それを行うための素晴らしい方法はありません。以下を送信しましたRailsバグ: https://github.com/Rails/rails/issues/3571