2011-10-21 8 views
9

Ho il mio mailer su rails 3.1 che ha un allegato inline.asset_url in mailer su binari 3.1

di aprire quella attaccamento io uso questo codice:

attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png") 

c'è un modo per cambiare la situazione con qualcosa di simile assets_url?

+0

Non hai bisogno (né vuoi) di usare qualcosa come asset_url per questo ... Ti farebbe risparmiare solo poche parole. Inoltre, versione più breve: 'File.read (Rails.root.join ('app/assets/images', 'Rails.png'))' da cui è possibile creare il proprio helper "asset_url". –

+0

ma posso mettere le mie risorse nel file delle risorse del venditore, come un file js esterno, o un'immagine esterna che voglio aggiungere al corpo dell'e-mail. –

+0

Puoi fare qualcosa come 'File.read (Rails.root. join ('public', view_context.asset_path ('Rails.png'))) '? Dovrebbe funzionare come le risorse compilate sono sempre in pubblico/attività. Quel 'view_context' potrebbe non essere necessario (o potrebbe non essere disponibile in ActionMailer :() ma proviamoci! –

risposta

10

Se ho compreso correttamente, si desidera utilizzare la funzionalità di ricerca della pipeline di asset per individuare il percorso locale per una determinata risorsa in modo da non dover codificare in modo rigido la directory in cui si trova. Se questo è il caso, si desidera fare questo:

<YourAppName>::Application.assets.find_asset('Rails.png').pathname 

questo per localizzare l'attività utilizzando conduttura di serie/pignoni ricerca, e vi darà il percorso locale completo del file.

+0

Tu signore ... salva la mia giornata ... grazie –

+0

ciao, questo mi dà il percorso in "app/assets/..." ma non fornisce il percorso di asset effettivo in "public/assets", è bello saperlo, ma anche in ambiente di produzione non mi dà la directory che volevo. so se ho aggiunto ai miei appunti. Grazie – FireDragon