【问题标题】:Rails 3.1.0 default_url_options for custom pathsRails 3.1.0 default_url_options 用于自定义路径
【发布时间】:2012-08-16 06:16:39
【问题描述】:

在我的 routes.rb 中,我定义了一个自定义路径:

match "foo/copy" => "foo#copy", :via => [ :post ], :as => "copy_foo"

我的 config/initializers 目录中有一个名为 https_by_default.rb 的初始化程序,其中包含一行:

Rails.application.routes.default_url_options[:protocol] = 'https'

如果我运行 rails 控制台并输入 Rails.application.routes.default_url_options,它会按预期返回 {:protocol => 'https}

但在我看来,我使用生成的自定义路径 _url 帮助程序时,它不会使用 https 生成 URL。 ERB 中的<%= copy_foo_url() %> 返回http://localhost:3000/foo/copy

为了让我的命名路由助手尊重 default_url_options,我缺少什么?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1


    【解决方案1】:

    您应该改用以下内容:

    <%= copy_foo_path() %>
    

    并在您的应用程序配置文件中添加。

    config.force_ssl = true
    

    这会在您的所有 Rails 环境中启用 ssl。如果您只想在您的生产环境中启用 ssl,那么只需将该行添加到您的生产配置文件中。

    【讨论】:

    • 太棒了!这似乎工作得很好。我将不得不进一步测试它,但这似乎可以解决问题。非常感谢。不过,我有一些问题:这只会在我们的域上强制使用 SSL,对吗?外部链接不会被强制转换成 HTTPS?
    • Rails 将自动重定向外部链接以使用 https。
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多