2012-03-23 9 views
7

Avevo request.env['http_host'] che funziona su localhost, ma causa un errore quando si fa riferimento in una pagina di layout su heroku.Rails: come trovare l'URL del dominio in un layout

Questa richiesta funziona in una vista e visualizza l'URL di base corretto, ma provoca un errore quando si sposta il codice sul layout. Nota: lo sto usando per creare URL assoluti per le immagini nelle e-mail html.

<%= "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %> 
    <%= image_tag "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %> 

errore ricevuto:

ActionView::Template::Error (undefined method `env' for nil:NilClass): 
+0

A p Il modo migliore per aggirare questo è impostare le impostazioni globali per dev vs prod. –

risposta

15

Se si desidera che l'host senza il porto, basta usare:

request.host 

edit: Ops, ho appena notato che si sta utilizzando il codice nella vista. Non so se è visibile laggiù, l'ho usato solo nei controller, ma è abbastanza semplice da superare impostando una variabile di istanza.

+2

'request' dovrebbe essere presente anche nella vista, come nell'esempio fornito. – tadman

5
  1. nel controller, impostare un'istanza variabile pari all'host:
    • @host = request.host
  2. Secondo voi, riferimento la variabile di istanza utilizzando
    • <%= @host %>
Problemi correlati