Rails 3.1: les Problèmes sur l'affichage des images dans mailer afficher les fichiers
Je suis en utilisant Ruby on Rails 3.1 et je voudrais ajouter mon site web logo (c'est une image traitée par le biais du nouveau Asset Pipeline) à une adresse e-mail.
Si dans mon mailer le fichier de vue, je les éléments suivants:
<% # Note: '@root_url' is my application hostname (eg: http://www.mysite.com) %>
<%= link_to image_tag( "#{@root_url.to_s}/images/logo.png"), @root_url.to_s %>
il ne fonctionne pas dans production mode (qui est, je ne peux pas afficher le logo de l'image) parce que je pense que l'Asset Pipeline utilise l'Empreinte de la technique et dans l'e-mail reçu, il ne le fait pas. En inspectant le code HTML du logo de l'élément dans l'e-mail que je reçois quelque chose comme ceci:
<img src="http://www.mysitecom/images/logo.png"> # without Fingerprinting
Comment puis-je résoudre le problème?
Dans mon production.rb
fichier j'ai le texte suivant a commenté le code:
# Enable serving of images, stylesheets, and javascripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
- Avez-vous trouvé une solution à ce problème?
- J'ai encore à essayer toutes les solutions proposées... j'ai testé certains de ces mais personne ne travaille pour moi.
- cela peut vous aider api.rubyonrails.org/classes/ActionMailer/Base.html
Vous devez vous connecter pour publier un commentaire.
dans
config/environments/production.rb
(et d'autres de l'environnement les fichiers nécessaires) ajouter:après que les rails d'ajouter automatiquement le nom d'hôte en face de chemins générés par
image_tag
deviendra
...de même pour
image_path
deviendra
watch out!!!
est différent de celui
config.action_mailer.asset_host = 'website'
est activée par défaut dans les Rails 4? C'est, avez-vous seulement besoin de spécifier cette option si vous souhaitez que l'actif de l'hôte à être autre chose que la racine de domaine?Toutes ces réponses sont en supposant que vous êtes à l'aide de l'asset pipeline, mais à partir de votre exemple, vous spécifiez une image dans /public/images - ce n'est pas une partie de l'asset pipeline, de sorte que tous les
asset_path
réponses ne fonctionne pas, et encore vos premières empreintes supposition est incorrecte.Si vous mettez une image dans /public/images, vous voulez que votre balise image pour avoir un
src
dehttp://yoursite.com/images/the-image.jpeg
, pas d'empreintes, pas de chemin de asset, rien - juste coder en dur dans votre point de vue:Mais, vous avez en fait avoir le fichier à cet emplacement! Si vous avez votre image dans /app/assets/images, alors vous aurez besoin d'utiliser image_tag et de l'asset pipeline d'autres ont répondu.
Une autre solution consiste à inclure l'image d'un logo dans le mail. Le message peut également être consulté hors ligne. Vous pouvez ajouter le logo de vous Mailer classe, avec le code suivant..
Ce code permettra d'inclure votre image à l'e-mail. Je crois que si vous souhaitez montrer à votre pièce jointe dans le mail, vous devez effectuer les opérations suivantes:
Et dans votre sendmail.html.erb point de vue, vous pouvez utiliser le image_tag méthode:
note: si le courrier ne serait pas indiqué correctement, vous pouvez aussi essayer la solution à:
Rails de pièces jointes inline ne sont pas affichés correctement dans gmail
Votre courrier peut alors également être consulté en mode hors connexion correctement.
Avez-vous essayé d'ajouter quelque chose comme cela
à votre
config/enviroments/production.rb
fichierEssayer:
logo.png
est à la racine de vousimages
dossier si il est dans un autre dossier à l'intérieur des images commesystem
vous pouvez ajouter/assets/system/logo.png
asset_path
commeimage_tag(@root_url.to_s+asset_path('logo.png'))
Vous donnez image_tag une url absolue, donc il pense qu'il n'a pas besoin de faire des empreintes digitales ou quelque chose d'autre que régurgiter la chaîne que vous lui avez donné. Je voudrais essayer
Vous aurez également besoin de mettre en actioncontroller de l'actif de l'hôte pour obtenir des rails pour générer une url complète de l'image plutôt que de simplement un chemin
Une mise en garde à noter: si vous modifiez l'image de l'empreinte digitale sera bien évidemment le changement et l'inage URL dans toutes vos précédemment envoyé des e-mails ne seront plus valides. Vous pouvez envisager de faire des images en ligne, bien que, évidemment, ces derniers augmentent la taille d'e-mail
Essayer ce un
Ajoutant
mode:'rb'
fonctionné pour moi:Si vous compilez vos actifs:
et l'utilisation asset_path de votre point de vue:
--il doit travailler à la fois le développement et la production. C'est la façon dont je le fais de mon point de vue, et .css.scss.erb les feuilles de style. Je suppose qu'il ne fait pas de différence que c'est une vue d'un mailer.
<img src="http://assets/system/logo.png">
(sans Empreintes digitales et le nom d'hôte).assurez-vous que votre page html ont follwing en-tête
et le rendu de l'image comme:
ou
si vous voulez le lien de l'image puis
@url = 'adresse de votre site web'