2015-12-14 10 views
5

私は、いくつかのファイルを圧縮する週間の発電機を持っています。いくつかは、いくつかのペーパークリップを経て、私は/images/publicせず、app後に起動しているpublic/system/env...Rails - アセットのファイルパス(URLパスではない)を取得する方法は?

ファイルパスでアップロードされapp/assets/images/xxx.xxxに資産です。

/assets/some.pngまたは/system/production/xyz/some.jpgのようなものがありますが、これらはURLパスとして正常に機能しますが、ファイルで収集したいと考えています。

アセットのファイルパスを取得するにはどうすればよいですか?


これは簡単な説明です。

アセットURI文字列を指定すると、アセットのファイルパスを見つけて取得するにはどうすればよいですか?

public/logo.png 
public/assets/logo.png 
app/assets/images/logo.png 
+0

た場合、私はあなたがここで尋ねようとしていることを正しく理解しています...あなたはアセットファイルパス、すなわち 'app /"ファイル名/xxx.xxxを定義したいと考えています "file-type" ' – CallmeSurge

+0

@CallmeSurgeファイルパスが必要ですルビー '' 'ファイル' ''を開くことができます。アセットURLのパスにpublic /またはassets/images/logo.pngの ''/images''部分は必要ありません。しかし、HTTP経由ではなく、サーバー上でRubyスクリプトを使用してファイルを取得したいのですが。 –

答えて

0

Rails.rootは、あなたのプロジェクトのルートへの絶対パスを与える:

資産URLパス/assets/logo.pngが、ファイルの1つである可能性があります。 (それはPathnameオブジェクトを返します)

あなたは、このような何か行うことができます:だから公共/資産内のファイルへのパスを取得するには

Rails.root.join("some_dir1", "some_dir2", "some_file") 

を:

Rails.root.join("public", "assets", "file.jpg") 
+1

これは質問に答えません。アセットURLパスは、プロジェクトルートのないファイルパスではありません。アセットURLのパス ''/assets/logo.png''は、 '' public/logo.png'''、 '' public/assets/logo.png'''、 '' '' app/assets/images/logo.png'''。これらはすべて異なるファイルパスで、文字列 '' '" /assets/logo.png "' ''を指定すると、 '' Rails.root'''はアセットを見つけずパスを返します。 –

関連する問題