En ce moment, j'utilise ceci qui fonctionne pour l'hôte de développement, mais je dois changer manuellement le code {: Host => ""} lorsque je passe en production.
def share_all
url = Rails.application.routes.url_helpers.post_url(self, :Host => 'localhost:3000')
if user.authentications.where(:provider => 'Twitter').any?
user.Twitter_share(url)
end
end
J'aimerais utiliser ceci et définir ensuite les options default_url_options par environnement:
def share_all
url = Rails.application.routes.url_helpers.post_url(self)
if user.authentications.where(:provider => 'Twitter').any?
user.Twitter_share(url)
end
end
J'ai essayé d'ajouter ceci à mon config/environnements/development.rb mais j'obtiens toujours le message d'erreur "hôte manquant vers lequel créer un lien! Veuillez fournir: paramètre hôte ou définir default_url_options [: hôte]"
config.action_controller.default_url_options = {:Host => "localhost:3000"}
Et j'ai même essayé de cette façon:
config.action_controller.default_url_options = {:Host => "localhost", :port => "3000"}
MODIFIER:
J'ai maintenant aussi suivi ceci et toujours le même guide d'erreur http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options
class ApplicationController < ActionController::Base
protect_from_forgery
include ApplicationHelper
def default_url_options
if Rails.env.production?
{ :Host => "example.com"}
else
{:Host => "example1.com"}
end
end
end
Cela me rend fou, qu'est-ce qui me manque ici ???
Ok je l'ai compris la bonne façon de l'écrire est
Rails.application.routes.default_url_options[:Host] = 'localhost:3000'
:)
Vous devez redémarrer votre serveur avant que les modifications apportées à ce fichier prennent effet.
default_url_options
de votre application de ActionMailer
.Vous souhaitez conserver les éléments DRY le plus possible. Idéalement, vous ne souhaitez pas coder en dur votre hôte et votre port dans plusieurs endroits pour le même environnement, à moins que votre ActionMailer
en fait utilise un hôte différent port que le reste de votre Application
.
Pour définir le default_url_options
pour votre Application
entière, ajoutez simplement la ligne suivante à votre fichier config/environment.rb
(en changeant MyApp
en nom de votre application):
# Set the default Host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
Cela résoudra votre problème et définira automatiquement votre default_url_options
de Application
sur la même chose que votre config.action_mailer.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:Host=>"lvh.me", :port=>"3000"}
config.action_mailer.default_url_options = {: Hôte => "votre hôte"}
par exemple votre hôte localhost: 3000
vous pouvez le mettre dans test.rb, development.rb, fichiers de production.rb. L'hôte peut différer d'un environnement à l'autre.