【发布时间】:2012-10-30 20:42:15
【问题描述】:
我在app 中有一个名为csv 的目录,在这个目录中我有一个名为names.csv 的文件
我想使用File.read(path:string)函数来读取文件。
文件的相对路径是什么?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
我在app 中有一个名为csv 的目录,在这个目录中我有一个名为names.csv 的文件
我想使用File.read(path:string)函数来读取文件。
文件的相对路径是什么?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
file = File.join(Rails.root, 'app', 'csv', 'names.csv')
File.read(file)
【讨论】:
File.join,因为Rails.root 是一个Pathname 对象。只需这样做:Rails.root + "app/csv/names.csv"
File.join 是更安全的方式
你应该这样做:Rails.root.join "app", "csv", "names.csv"
Rails.root 返回一个 PathName 对象。 PathName 有一个join 方法,它接受任意数量的参数并将其附加到路径名以创建新路径。
在此处阅读 PathName#join:
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/pathname/rdoc/Pathname.html#method-i-join
【讨论】:
Rails.root 指向 Rails 项目的顶层文件夹,因此路径为:
File.read(File.join(Rails.root, 'app','csv','names.csv'))
【讨论】:
感谢以上答案,它对我也有效:
"#{Rails.root}/public/spreadsheets/file_name.xlsx"
【讨论】: