220 votes

Manquant d’hôte faire un lien vers ! S’il vous plaît fournir : héberger paramètre ou la valeur de default_url_options [ : hôte]

J'ai été googler pour environ 90 minutes maintenant, et n'ont toujours pas de réponse à cela. Où puis-je configurer default_url_options? J'ai déjà réglé pour config.action_mailer.default_url_options afin de résoudre ce même bug d'ailleurs, mais maintenant j'ai cette erreur lorsque vous essayez d'utiliser un helper URL à l'intérieur d'un RSpec spec. Je n'ai aucune idée de l'endroit où il s'attend à default_url_options à définir.

 Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/)
 RuntimeError:
   Missing host to link to! Please provide :host parameter or set default_url_options[:host]
 # ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>'

Ce code n'a rien à voir avec les emails/ActionMailer, il arrive juste à besoin d'une URL au lieu d'un chemin.

Des idées?

287voto

Carlos Castillo Points 791

Vous devez ajouter la ligne suivante à tous les environnements :

``

de cette façon qu'il peut fonctionne dans tous les environnements et pourrait être différente pour tout le monde, par exemple :

Development.RB

test.RB

production.RB

83voto

d11wtq Points 17790

Me semble répondre à toutes mes questions aujourd'hui !

Quelque part dans routes.rb  :)

46voto

nickh Points 1792

L’hôte doit être spécifié dans le fichier de configuration de chaque environnement. Par exemple : config/environments/development.rb.

Voir cette question et cette question.

25voto

ivanxuu Points 31

Lorsque vous utilisez l' listing_url méthode de l'URL complète sera renvoyé(pas un rapport comme d'habitude). C'est pourquoi rails est de vous demander de l'hôte, pour calculer l'ensemble de l'URL.

Comment pouvez-vous dire à rails de l'hôte? Vous pouvez le faire de plusieurs façons:

1.L'ajout de cette option à chaque environnement:

[/config/development.rb]
config.action_mailer.default_url_options = { host: "localhost:3000" }
[/config/test.rb]
config.action_mailer.default_url_options = { host: "localhost:3000" }
[/config/production.rb]
config.action_mailer.default_url_options = { host: "www.example.com" }

REMARQUE: Si vous travaillez à l'intérieur d'un moteur rails n'oubliez pas de faire la même chose pour votre mannequin d'application à l'intérieur du moteur de tests: path_to_your_engine/test/dummy/config/environments/* parce que quand vous testez le moteur c'est ce que rails est de le tester contre.

2.Ajouter l'option host à la foo_url méthode comme ceci:

listing_url(listing, host: request.host) # => 'http://localhost:3000/listings/1'

3.Pas de sortie de l'hôte avec l'option :only_path to true.

listing_url(listing, only_path: true ) # => '/listings/1'   

À mon humble avis, je ne vois pas l'intérêt sur celui-ci car dans ce cas, je voudrais utiliser l' listing_path méthode

16voto

pduersteler Points 5893

Plus drôle, ce paramètre `` n’aide pas pour moi. En outre, déconner avec les paramètres d’environnement indépendant dans les lieux, que je me sentais comme si elle n’appartient pas, n’était pas satisfaisant pour moi. En outre, j’ai voulu une solution qui a fonctionné lors de la génération des urls en sidekiq/resque travailleurs.

Jusqu’ici, mon approche qui est acheminé dans `` :

Cela fonctionne pour moi dans les rails > = 3.2.x.

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