私はインラインアタッチメントを持ったレール3.1に私のメーラーを持っています。私はこのコードを使用している添付ファイルを開くにはmailer on rails 3.1
:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
はassets_url
ようなものでそれを変更する方法はありますか?
私はインラインアタッチメントを持ったレール3.1に私のメーラーを持っています。私はこのコードを使用している添付ファイルを開くにはmailer on rails 3.1
:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
はassets_url
ようなものでそれを変更する方法はありますか?
私が正しく理解していれば、アセットパイプラインの検索機能を使用して、特定のアセットのローカルパスを探して、どのディレクトリにハードコードする必要がないかを確認する必要があります。
<YourAppName>::Application.assets.find_asset('Rails.png').pathname
これは、標準のパイプライン/スプロケット検索を使用してアセットの位置を特定し、ファイルへの完全修飾ローカルパスを提供します。
あなた...私の日を節約します...ありがとう –
こんにちは、これは私にパスを与えます'app/assets/...'は実際のアセットパスを 'public/assets'に指定していませんが、これを知ってもいいですが、プロダクション環境でも私が望むディレクトリはありません。私のメモに追加しましたが、知っています。ありがとう – FireDragon
このためにasset_urlのようなものを使用する必要はありません(また必要ありません)。最初の数単語だけ保存されます。また、より短いバージョン: 'File.read(Rails.root.join( 'app/assets/images'、 'Rails.png'))'から、あなた自身の "asset_url"のようなヘルパーを作ることができます。 –
でも、外部のjsファイルやメールの本文に追加したい外部のイメージのような、ベンダー資産ファイルに資産を入れることができます –
'File.read(Rails.root。 join( 'public'、view_context.asset_path( 'Rails.png'))) '?コンパイルされたアセットは常にパブリック/アセットになっているので、これはうまくいくはずです。その 'view_context'は必要ではないかもしれません(またはActionMailerで利用できないかもしれません:()が、それを試してみましょう! –