tag style rails image_tag ruby-on-rails-3 actionmailer

ruby on rails 3 - style - image_tag en el programa de correo que no usa asset_host



image_tag rails (3)

El código ofensivo de por qué no puedes hacerlo está aquí:

# actionpack/lib/action_view/helpers/asset_paths.rb, line 27 def compute_public_path(source, dir, ext = nil, include_host = true) # More code up here.... if controller && include_host has_request = controller.respond_to?(:request) source = rewrite_host_and_protocol(source, has_request) end end

Aquí está el archivo ofensivo en GH: https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/asset_paths.rb

Como una plantilla de Vista de ActionMailer carece de un Controlador, no obtiene el comando para reescribir en función de un asset_host. Esto probablemente debería ser un boleto abierto para el equipo central de Rails.

Puedes probar la siguiente configuración y ver si te ayuda:

config.action_mailer.default_url_options = {:host=>"localhost", :port=>3000, :protocol=>"http://"}

Sin embargo, estoy bastante seguro de que solo va a funcionar para url_for .

image_tag no está utilizando el asset_host que he configurado. ¿Alguna idea de por qué? Lo único que puedo pensar es que tiene que ver con que sea un Mailer.

config / environment / development.rb

config.action_controller.asset_host = "http://localhost:3000"

myMailer.rb

<%= image_tag "logo.png", :style=>"margin-left:10px; padding-bottom:15px;" %>

representado como:

<img alt="Logo" src="/images/logo.png?1303090162" style="margin-left:10px; padding-bottom:15px;" />

En consola:

> MyApp::Application.config.action_controller #<OrderedHash {… :asset_host=>"http://localhost:3000", …}>

Necesito la etiqueta image_tag para crear una url de ruta completa porque se mostrará en un correo electrónico.


Estaba equivocado antes. Esta es la solución que necesita (hasta los rieles 3.1 donde las configuraciones asset_host se unifican):

config.action_mailer.asset_host = "http://localhost:3000"


Necesitamos especificar tanto config.action_controller.asset_host como config.action_mailer.asset_host, en Rails 3.1 y 3.2.

Para agregar el nombre de host a image_tag en vistas de correo electrónico y vistas que no son de correo electrónico, agregue lo siguiente a su archivo de entorno:

config.action_controller.asset_host = ''http://localhost:3000'' config.action_mailer.asset_host = config.action_controller.asset_host

Donde ''http: // localhost: 3000'' debe ser reemplazado por su URL de host (y el puerto si corresponde).

Esto debe establecerse tanto en action_controller como en action_mailer, incluso en Rails 3.2.x.