2013-12-23 2 views
0

У меня есть приложение Rails, в котором я использовал метод force_ssl, какПринудительный SSL на именованный маршрут в Rails

def force_ssl # to use https for payment page 
    if !Rails.env.development? && !request.ssl? 
    redirect_to :protocol => 'https' 
    end 
end 

для конкретного имени действия «ABC» с названием маршрута

матч "/найти-а-а»=> "домой # ABC"

, когда я иду в URL

http://local.demo.com/find-a-abc

будет перенаправлено_от https://local.demo.com/abc

Любое решение? поэтому он перенаправляет на конкретный маршрут, а не перенаправляет на действие при использовании протокола https.

+0

бы определения 'force_ssl' как 'before_filter' работает? – benjaminjosephw

+0

Да, он работает отлично, но моя проблема заключается в перенаправлении на действие вместо имени пути. –

ответ

0

Не похоже, что вы предоставили именованный маршрут здесь (то есть match '/find-a-abc' => "home#abc", :as => :named_route). Вам нужно будет сделать это и позвонить named_route_url, а не просто контроллеру и действию, чтобы получить правильный URL.

Если вы хотите конкретный маршрут, чтобы всегда быть обработаны с помощью SSL, можно определить маршрут, как так:

scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do 
    match '/find-a-abc' => "home#abc", :as => :abc 
end 

Тогда abc_url всегда должен быть «https://local.demo.com/find-a-abc»

+0

Спасибо, это работает –

Смежные вопросы