2012-10-30 14 views
25

mam wewnątrz app katalog o nazwie csv i wewnątrz tego katalogu Mam plik o nazwie names.csv chcę użyć File.read(path:string) funkcji do odczytu pliku.
jaka jest ścieżka względna do pliku?Szyny: ścieżka pliku

Odpowiedz

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

nie ma potrzeby korzystania z 'File.join' ponieważ 'Rails.root' jest obiektem' Pathname'. Po prostu zrób to: 'Rails.root +" app/csv/names.csv "' –

+2

W szczególności File.join NIE chroni Cię przed jedną lub kilkoma częściami ścieżki będącymi ".." i z przyjemnością wytworzy ścieżkę jak "app/csv /../ controllers/users_controller.rb", jeśli podano File.join (Rails.root, "app", "csv", "../controllers/user_controller.rb") lub File.join (Rails .root, 'app', 'csv', '..', 'controllers', 'user_controller.rb') – nachbar

4

Rails.root wskazuje na najwyższym folderze projektu szyny, więc ścieżka będzie:

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

Dzięki za odpowiedzi powyżej, on pracował również w ten sposób dla mnie:

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