2010-12-04 4 views
14

Je veux avoir un lien utiliser SSL. J'utilise ce code:link_to avec: le protocole ne fonctionne pas

<%= link_to "Buy now!", line_items_path(:thing_id => @thing), :method => :post, :protocol => "https", :only_path => false %> 

Pour une raison quelconque, le lien est généré avec http:// au lieu de https://. J'utilise Rails 3.0.3.

Répondre

24

Vous devez mettre l'option: protocole dans l'assistant de chemin:

<%= link_to "Buy now!", line_items_url(:thing_id => @thing, :protocol => "https"), :method => :post %> 
+3

Si je ne me trompe pas,: only_path => false est nécessaire. Il ne peut être omis que si: host est spécifié. – plang

+10

FYI, le vrai truc ici est de changer line_items_path à line_items_url car les assistants de chemin ne supportent pas: protocole – Bob

+0

De plus: only_path => false est travaillé pour moi .. merci ... :) –

1

Si vous utilisez bartt-ssl_requirement rubygem dans votre application, vous pouvez utiliser la ssl-url-helper mentionner explicitement le protocole http ou https.

Avantages:

  1. Si vous avez contrôle SSL désactivé (environnement de développement), par manière suivante: SslRequirement.disable_ssl_check = true, en passant ensuite :secure => true ajoutera pas explicitement les liens https à votre vue. Ce n'est pas le cas si vous spécifiez :protocol => 'https' et désactivez la vérification SSL.

  2. En outre, il n'est pas nécessaire de remplacer line_items_path par line_items_url à chaque endroit.

Questions connexes