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?
Il semble que cela sera résolu dans Rails 4! https://github.com/Rails/rails/commit/9b4514c3b8ecfbc40a44dbd4c2ebd4ce67f4a459
Je n'ai pas essayé mais ajoutez ceci dans votre ApplicationController
:
def default_url_options(options={})
{ :secure => true }
end
def default_url_options(options={})
{ :protocol => "https" }
end
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