2012-10-30 17 views
25

のパスディレクトリがcsvと呼ばれ、このディレクトリ内の私は、ファイルを読むためにFile.read(path:string)機能を使用したいnames.csv と呼ばれるファイルを持っています。
ファイルへの相対パスは何ですか?のRails:<code>app</code>内部の私が持っているファイル

あなたのレールのプロジェクトの最上位フォルダへ

答えて

47
file = File.join(Rails.root, 'app', 'csv', 'names.csv') 
File.read(file) 
+19

をするので 'File.join'を使用する必要はありません'Rails.root'は' Pathname'オブジェクトです。 'Rails.root +" app/csv/names.csv " –

+2

特に、File.joinは1つ以上のパスパーツを '..'から守ることはできず、幸いにパスを生成しますFile.join(Rails.root、 'app'、 'csv'、 '../controllers/user_controller.rb')またはFile.join(Rails)が指定されている場合は 'app/csv /../ controllers/users_controller.rb' .root、 'app'、 'csv'、 '..'、 'controllers'、 'user_controller.rb') – nachbar

4

Rails.rootポイントなので、パスは次のようになります。

あなたがすべき
File.read(File.join(Rails.root, 'app','csv','names.csv')) 
3

おかげで、それはまた私のためにこの方法を働いた:

"#{Rails.root}/public/spreadsheets/file_name.xlsx" 
関連する問題