我正在开发一个混合了http和https的网站 - 最简单/最简单的方法是让链接使用正确的路由协议 - 是否可以在路由文件中指定?
说我在Rails 3中有以下路由。
match "/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,但这是一个额外的重定向,加上它在表单帖子上失败。
想法?
答案 0 :(得分:24)
将test_url(:protocol => 'https')
用于https网址。
答案 1 :(得分:19)
尚未尝试,但在ApplicationController
def default_url_options(options={})
{ :secure => true }
end
答案 2 :(得分:5)
def default_url_options(options={})
{ :protocol => "https" }
end
答案 3 :(得分:2)
答案 4 :(得分:2)
对于Rails 3.2,我使用了@ apneadiving的答案。将以下代码添加到我的 ApplicationController
def default_url_options(options={})
options.merge{ :protocol => "https" }
end
答案 5 :(得分:1)
Rails 3 SSL routing redirects from https to http很好地回答了这个问题。简而言之,没有一个很好的方法来做到这一点。我提交了以下Rails错误:https://github.com/rails/rails/issues/3571
答案 6 :(得分:-1)
您可以使用名为ss_requirement的插件,它会为您提供类似的方法 ssl_required ssl_allowed
您只需在控制器中添加此项即可在任何操作
上启用或禁用httpsssl_allowed :login, :update_profile