2012-10-30 48 views
25

Tôi có bên app một thư mục gọi csv và bên trong dir này tôi có một tập tin gọi là names.csv Tôi muốn sử dụng chức năng File.read(path:string) để đọc các tập tin.
đường dẫn tương đối của tệp là gì?Rails: đường dẫn của tập tin

Trả lời

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

Không cần phải sử dụng 'File.join' vì 'Rails.root' là một đối tượng' Pathname'. Chỉ cần làm điều này: 'Rails.root +" app/csv/names.csv "' –

+2

Cụ thể, File.join KHÔNG bảo vệ bạn khỏi một hoặc nhiều phần đường dẫn là '..', và sẽ vui vẻ tạo ra một đường dẫn như 'app/csv /../ controllers/users_controller.rb' nếu được cung cấp File.join (Rails.root, 'app', 'csv', '../controllers/user_controller.rb') hoặc File.join (Rails) .root, 'ứng dụng', 'csv', '..', 'bộ điều khiển', 'user_controller.rb') – nachbar

4

Rails.root điểm đến thư mục trên cùng của dự án đường ray của bạn, vì vậy con đường sẽ là:

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

Cám ơn câu trả lời ở trên, Nó cũng làm việc theo cách này cho tôi:

"#{Rails.root}/public/spreadsheets/file_name.xlsx" 
Các vấn đề liên quan