71 votes

Comment définir config.action_controller.default_url_options = {: host = '#' '} par environnement

Maintenant je suis en utilisant ce qui travaille pour le développement de l'hôte, mais je dois changer manuellement le {:accueil => ""} le code quand je passe à la production.

post.rb

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 l'utiliser et ensuite définir le default_url_options par l'environnement:

post.rb

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 ce point à ma config/environments/développement.rb mais j'ai toujours le "Manque d'hôte de lien! Veuillez fournir :accueil paramètre ou de l'ensemble default_url_options[:host]" erreur

développement.rb

config.action_controller.default_url_options = {:host => "localhost:3000"}

Et j'ai même essayé de cette façon:

développement.rb

config.action_controller.default_url_options = {:host => "localhost", :port => "3000"}

EDIT:

J'ai également suivi ce et toujours la même erreur guide http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options

contrôleur d'application

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

C'est me rend fou, ce qui me manque ici???

128voto

trying_hal9000 Points 1446

Ok je l'ai compris la bonne façon de l'écrire est

 Rails.application.routes.default_url_options[:host] = 'localhost:3000'
 

:)

7voto

Ryan Bigg Points 64561

Vous devez redémarrer votre serveur avant que les modifications apportées à ce fichier prennent effet.

4voto

Dinatih Points 1104

L'ordre dans le fichier de configuration est important , mettez

 config.action_mailer.default_url_options = {
  :host => '127.0.0.1',
  :port => 3000
}
 

avant : config.action_mailer.delivery_method = :test

ou: config.action_mailer.delivery_method = :smtp

J'espère que cela aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X