web-dev-qa-db-fra.com

Obtenir Rails URL helpers pour générer automatiquement les URL https

Je développe un site qui mélange beaucoup http et https - quel est le moyen le meilleur/le plus simple pour que les liens utilisent le bon protocole pour l'itinéraire - peut-il être spécifié dans le fichier de routes?

Disons que j'ai l'itinéraire suivant dans Rails 3.

match "/ test" => "test # index",: as =>: test,: contraintes => {: protocol => 'https'}

Si je suis sur une page http et que j'utilise test_url(), cela affichera http://domain.com/test . Je veux https://domain.com/test à la place.

Je sais que je peux utiliser test_url(:secure => true), mais c'est une logique de duplication.

Je sais que j'aurais pu http://domain.com/test to https://domain.com/test , mais c'est une redirection supplémentaire, plus elle échoue sur la forme des postes.

Des idées?

32
Joe Van Dyk
2
Joe Van Dyk

Je n'ai pas essayé mais ajoutez ceci dans votre ApplicationController:

def default_url_options(options={})
 { :secure => true }
end 
19
apneadiving
def default_url_options(options={})
 { :protocol => "https" }
end
6
i_emmanuel

Pour Rails 3.2, j'ai utilisé une combinaison de la réponse de @ apneadiving. Ajout du code ci-dessous à mon ApplicationController

def default_url_options(options={})
  options.merge{ :protocol => "https" }
end
2
Mark Ellul