55 votes

image_tag dans le programme de messagerie n'utilisant pas asset_host

image_tag n'est pas à l'aide de la asset_host je me suis fixé. Des idées pourquoi? La seule chose que je peux penser à est de il avoir à faire avec elle être un Mailer.

config/environnement/développement.rb

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

myMailer.rb

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

traduit comme:

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

Dans la console:

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

J'ai besoin de la image_tag pour créer un chemin d'accès complet de l'url, car il sera montrant dans un courriel.

93voto

Patrick Robertson Points 1816

Je me suis trompé avant. Voici la solution dont vous avez besoin (jusqu’aux rails 3.1 où les configurations asset_host sont unifiées):

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

22voto

Tiago Franco Points 515

Nous devons spécifier à la fois config.action_controller.asset_host et config.action_mailer.asset_host, sur Rails 3.1 et 3.2.

Pour ajouter le nom d'hôte à l'image_tag sur les affichages avec et sans courrier électronique, ajoutez ce qui suit dans votre fichier d'environnement:

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

Où "http: // localhost: 3000" doit être remplacé par votre URL d'hôte (et son port, le cas échéant).

Ceci doit être défini à la fois sur action_controller et action_mailer, même dans Rails 3.2.x.

0voto

Patrick Robertson Points 1816

Le code incriminé pour expliquer pourquoi vous ne pouvez pas faire, c'est ici:

# 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

Voici le fichier avi sur GH: https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/asset_paths.rb

Depuis un ActionMailer modèle de Vue manque un Contrôleur, vous n'obtenez pas la commande de réécriture basée sur une asset_host. Ce sera probablement un billet ouvert pour les Rails de l'équipe de base.

Vous pouvez essayer la configuration suivante et voir si ça aide:

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

Je suis sûr que ça va fonctionner pour url_for .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X