2012-10-30 11 views
25

की राह मैं app अंदर एक निर्देशिका csv कहा जाता है और इस निर्देशिका के अंदर मैं एक फ़ाइल बुलाया names.csv मैं File.read(path:string) समारोह का उपयोग करने के लिए फ़ाइल को पढ़ने के लिए करना चाहते हैं की है।
फ़ाइल के सापेक्ष पथ क्या है? अपने रेल परियोजना के शीर्ष फ़ोल्डर मेंरेल: फ़ाइल

उत्तर

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

'File.join' उपयोग करने के लिए है, क्योंकि कोई ज़रूरत नहीं है 'Rails.root' एक 'पथनाम' वस्तु है। बस यह करें: 'Rails.root +" ऐप/सीएसवी/names.csv "' –

+2

विशेष रूप से, File.join आपको एक या अधिक पथ भागों से '..' से सुरक्षित नहीं करता है, और खुशी से पथ उत्पन्न करेगा फ़ाइल 'जॉइन (Rails.root,' app ',' csv ',' ../controllers/user_controller.rb ') या File.join (रेल) दिए जाने पर' ऐप/सीएसवी /../ नियंत्रक/users_controller.rb 'की तरह) .root, 'app', 'csv', '..', 'नियंत्रक', 'user_controller.rb') – nachbar

4

Rails.root अंक है, तो पथ होगा:

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

आप क्या करना चाहिए: Rails.root.join "app", "csv", "names.csv"

Rails.root एक PathName वस्तु देता है। पथनाम में join विधि है जो किसी भी संख्या में तर्क लेती है और इसे नया पथ बनाने के लिए पथनाम में जोड़ती है।

PathName # पर पढ़ें यहाँ शामिल हो:

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/pathname/rdoc/Pathname.html#method-i-join

3

ऊपर जवाब के लिए धन्यवाद, यह भी मेरे लिए इस तरह से काम किया:

"#{Rails.root}/public/spreadsheets/file_name.xlsx" 
संबंधित मुद्दे