2012-03-23 10 views
7

Tenía request.env['http_host'] trabajando en localhost, pero causa un error cuando se hace referencia en una página de diseño en heroku.Rieles: cómo encontrar la URL de dominio en un diseño

Esta solicitud funciona en una vista y muestra la url base correcta, pero causa un error cuando muevo el código al diseño. Nota: Estoy usando esto para construir direcciones URL absolutas para imágenes en correos electrónicos html.

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

recibido:

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

A p Una forma posible de evitar esto es establecer configuraciones globales para dev vs prod. –

Respuesta

15

Si desea que el host sin el puerto, sólo tiene que utilizar:

request.host 

edición: Vaya, acabo de cuenta de que está utilizando el código en la vista. No sé si está visible allí, solo lo he usado en controladores, pero eso es bastante sencillo de superar estableciendo una variable de instancia.

+2

'request' también debe estar presente en la vista, como en el ejemplo dado. – tadman

5
  1. En su controlador, establezca una instancia variable igual al host:
    • @host = request.host
  2. En su opinión, la referencia la variable de instancia usando
    • <%= @host %>
Cuestiones relacionadas