2016-04-22 15 views
7

In un controller che io chiamo un servizio come:Dove impostare host per Rails.application.routes.url_helpers

MyService.call 

Nel metodo MyService.call voglio usare un aiutante URL:

Rails.application.routes.url_helpers.something_url 

Tuttavia, ottengo l'errore:

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true 

in config/ambienti/development.rb ho:

config.action_mailer.default_url_options = { host: 'localhost:3000' } 
config.action_controller.default_url_options = { host: 'localhost:3000' } 

Cosa devo impostare per non ottenere l'errore?

+0

Dove si trova "da qualche parte nel codice"? Forse questo aiuta: http://stackoverflow.com/questions/7219732/missing-host-to-link-to-please-provide-host-parameter-or-set-default-url-optio – Nobita

risposta

6

è possibile impostare l'host nei file di configurazione come:

Rails.application.routes.default_url_options[:host] = 'your_host'

Questo imposterà l'host predefinito non solo per action_mailer e action_controller, ma per qualsiasi cosa utilizzando il url_helpers.

+4

Hai un riferimento a il doc dove viene menzionato? Trovo spesso riferimenti solo per 'action_mailer' ma non per il resto –

2

Secondo this thread, ogni volta che utilizzando aiutanti di percorso, non rinviare default_url_options a ActionMailer o ActionController config e si prevede che ci sarà un metodo default_url_options nella classe. Questo ha funzionato per me:

class MyService 
    include Rails.application.routes.url_helpers 

    def call 
    something_url 
    end 

    class << self 
    def default_url_options 
     Rails.application.config.action_mailer.default_url_options 
    end 
    end 
end 

noti che è possibile utilizzare action_mailer o action_controller config a seconda che hai configurato.

Problemi correlati