2012-10-18 12 views
6

Ho lavorato con le numerose soluzioni all'errore descritto nel titolo.Sottodomini + ActionView :: Template :: Errore (host mancante per il collegamento!)

ActionView::Template::Error (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):

Tuttavia, questo progetto ha anche modificato la funzione url_for di fare uso di sottodomini, come si è visto in questo Railscast:

http://railscasts.com/episodes/221-subdomains-in-rails-3

Quindi, le risposte tradizionali a questo errore, come ad come impostare le variabili nel mio ambiente le impostazioni non sembrano essere la soluzione.

Ecco alcuni altri suggerimenti:

  • questo è un nuovo set up, ho appena clonato un progetto e rubino installato, rotaie, gemme, ecc
  • ho provato "rvm implode" e ricominciare più volte
  • il resto del team di solito si sviluppa localmente su Mac, mentre io sto sviluppando da remoto su una macchina Ubuntu.
  • sto lavorando come root (questo è importante?)

completato 500 Internal Server Error in 1889ms

ActionView :: Template :: Error (mancante host per collegare Si prega di fornire il: parametro host, impostare default_url_options [: host] o impostare: only_path su true): 1:% header.menu {: role => "banner"} 2: .col980 3:% h1 4:% a. logo {: href => root_url ({: subdomain => false})} 5: -if current_user.premium? 6: img {%: alt => "Contently",: src => "/images/logo_beta_premium.png"}/ 7: -else app/aiutanti/url_helper.rb: 16: in url_for' app/views/shared/_logged_in_writer_nav.html.haml:4:in _app_views_shared__logged_in_writer_nav_html_haml__656388632_107925510' app /views/layouts/application.html.haml:35:in block in _app_views_layouts_application_html_haml__193634629_107212530' app/helpers/application_helper.rb:15:in html5_haml_tag ' app/views/layout/application.html.haml: 2: in _app_views_layouts_application_html_haml__193634629_107212530' app/controllers/application_controller.rb:18:in error_generic'

risposta

6

Il problema è che si sta utilizzando un URL helper senza fornire un host predefinito da utilizzare per l'applicazione. La magia di *_url è che restituisce il percorso insieme all'URL di base nel collegamento.

Per esempio, se il vostro ospite URL predefinito è example.com:

> link_to "All Blogs", root_url(:subdomain => false) 
#=> <a href="http://example.com/">All Blogs</a> 

È possibile impostare l'host di default nei file config/environments/*.rb aggiungendo le seguenti righe alla fine del file di configurazione dell'ambiente si' ri in

config.before_initialize do                                                  
    MyApp::Application.routes.default_url_options[:host] = 'myapp.com' 
end 

Edit:.

È possibile evitare completamente questo problema utilizzando *_path

> link_to "All Blogs", root_path 
#=> <a href="/">All Blogs</a> 
Problemi correlati