通过highvoltage gem选择提供rails 4静态页面的SSL路由

时间:2013-12-04 04:04:15

标签: ssl ruby-on-rails-4 high-voltage

我通过高压宝石在ruby rails 4网站上提供了几个静态erb页面:

get '/about'    => 'high_voltage/pages#show', id: 'about'
get '/contact'  => 'high_voltage/pages#show', id: 'contact', :protocol => "https"
get '/privacy'  => 'high_voltage/pages#show', id: 'privacy'

这一切都运行良好,除了/ contact路由不重定向或强制启用SSL,它对使用的协议感到满意。

我在发动机堆场上托管网站,试图放置:仅限force_ssl或路线中的变量导致部署失败 - 高压使用的参数集与正常路线略有不同,所以我怀疑某处存在冲突。

对于选择静态页面(不是整个站点),任何人都使用高压和SSL和rails 4?示例路线请。

1 个答案:

答案 0 :(得分:0)

您可以通过覆盖HighVoltage#PagesController来查看文档的override section来实现此目的。

它可能看起来像这样:

class PagesController < ApplicationController
  include HighVoltage::StaticPage

  before_filter :ensure_secure_page

  private

  def ensure_secure_page
    if params[:id] == 'contact'
      # check to make sure SSL is being use. Redirect to secure page if not.
    end
  end
end

接下来禁用HighVoltage提供的路由:

# config/initializers/high_voltage.rb
HighVoltage.routes = false

然后在您的应用程序的路径文件中,您需要设置一条新路线:

# config/routes.rb
get "/pages/*id" => 'pages#show', as: :page, format: false