2011-10-21 12 views
9

私はインラインアタッチメントを持ったレール3.1に私のメーラーを持っています。私はこのコードを使用している添付ファイルを開くにはmailer on rails 3.1

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

assets_urlようなものでそれを変更する方法はありますか?

+0

このためにasset_urlのようなものを使用する必要はありません(また必要ありません)。最初の数単語だけ保存されます。また、より短いバージョン: 'File.read(Rails.root.join( 'app/assets/images'、 'Rails.png'))'から、あなた自身の "asset_url"のようなヘルパーを作ることができます。 –

+0

でも、外部のjsファイルやメールの本文に追加したい外部のイメージのような、ベンダー資産ファイルに資産を入れることができます –

+0

'File.read(Rails.root。 join( 'public'、view_context.asset_path( 'Rails.png'))) '?コンパイルされたアセットは常にパブリック/アセットになっているので、これはうまくいくはずです。その 'view_context'は必要ではないかもしれません(またはActionMailerで利用できないかもしれません:()が、それを試してみましょう! –

答えて

10

私が正しく理解していれば、アセットパイプラインの検索機能を使用して、特定のアセットのローカルパスを探して、どのディレクトリにハードコードする必要がないかを確認する必要があります。

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

これは、標準のパイプライン/スプロケット検索を使用してアセットの位置を特定し、ファイルへの完全修飾ローカルパスを提供します。

+0

あなた...私の日を節約します...ありがとう –

+0

こんにちは、これは私にパスを与えます'app/assets/...'は実際のアセットパスを 'public/assets'に指定していませんが、これを知ってもいいですが、プロダクション環境でも私が望むディレクトリはありません。私のメモに追加しましたが、知っています。ありがとう – FireDragon