2012-10-30 17 views
25

ho dentro app una directory chiamata csv e all'interno di questa dir ho un file chiamato names.csv voglio usare File.read(path:string) funzione per leggere il file.
qual è il percorso relativo al file?Rails: percorso del file

risposta

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

Non c'è bisogno di usare 'File.join' perché 'Rails.root' è un oggetto' Pathname'. Basta fare questo: 'Rails.root +" app/csv/names.csv "' –

+2

In particolare, File.join NON ti protegge da una o più parti del percorso che sono '..', e produrrà felicemente un percorso come 'app/csv /../ controller/users_controller.rb' se fornito File.join (Rails.root, 'app', 'csv', '../controllers/user_controller.rb') o File.join (Rails) .root, 'app', 'csv', '..', 'controller', 'user_controller.rb') – nachbar

4

Rails.root punta alla cartella principale del progetto rotaie, in modo che il percorso potrebbe essere:

File.read(File.join(Rails.root, 'app','csv','names.csv')) 
3

Grazie per le risposte di cui sopra, ha anche lavorato in questo modo per me:

"#{Rails.root}/public/spreadsheets/file_name.xlsx" 
Problemi correlati