Это действительно довольно просто в Rails 3. В config/routes.rb
:
MyApplication::Application.routes.draw do
resources :sessions, :constraints => { :protocol => "https" }
end
Или, если вам нужно использовать SSL для нескольких маршрутов:
MyApplication::Application.routes.draw do
scope :constraints => { :protocol => "https" } do
# All your SSL routes.
end
end
А связывание с SSL-маршрутами можно сделать так:
<%= link_to "Logout", sessions_url(:protocol => 'https'), :method => :delete %>
Если вы хотите автоматически перенаправить некоторые контроллеры (или фактически некоторые подпути) на эквивалентный URL-адрес на основе https, вы можете добавить что-то вроде этого в свои маршруты (хотелось бы, чтобы эта часть была проще):
# Redirect /foos and anything starting with /foos/ to https.
match "foos(/*path)", :to => redirect { |_, request|
"https://" + request.host_with_port + request.fullpath }