2017-03-08 80 views
0

I'm新軌道的我嘗試讀取txt.file,看起來像這樣:我怎樣才能閱讀的Ruby文件on Rails的

ThomasLinde;彼得·帕克;星期一

JulkoAndrovic; KeludowigFrau;星期二

JohannesWellenstein; SiegmundoKrugmando;星期三

現在我想讀取.txt文件的每個「列」,以在我的應用程序的頁面上顯示它。 我對代碼的想法是這樣的:

if (File.exist?("Zuordnung_x.txt")) 
    fi=File.open("Zuordnung_x.txt", "r") 
    fi.each { |line| 
     sa=line.split(";") 
     @nanny_name=sa[0] 
     @customer_name=sa[1] 
     @period_name=sa[2] 
    } 
    fi.close 
else 
    @nanny_name=nil 
    @customer_name=nil 
    @period_name=nil 
    flash.now[:not_available] = "Nothing happened!" 
end 

這是我的想法,但他給我的只有一行。有任何想法嗎?或者我只是能夠閱讀一條線,如果我使用@nanny_name

+0

您需要將數據存儲在一個數組或哈希,用你覆蓋變量變量爲您處理每一行 –

回答

0

您只能需要一個具有數組值的變量,並將每一行都推送給它。

@result = [] 
if (File.exist?("Zuordnung_x.txt")) 
    fi=File.open("Zuordnung_x.txt", "r") 
    fi.each do |line| 
    sa=line.split(";") 
    @result << {nanny_name: sa[0], customer_name: sa[1], period_name: [2]} 
    end 
    fi.close 
else 
    flash.now[:not_available] = "Nothing happened!" 
end 

和視圖模板,你需要在每個@result,例如

<% @result.each do |row| %> 
    <p><%= "#{row[:nanny_name]} serve the customer #{row[:customer_name]} on #{row[:period_name]}" %><p> 
<% end %> 

可選:

如果只是用split,也許你會得到一些字符串空白在字符串的開頭或在字符串末尾

"ThomasLinde ; PeterParker ; Monday".split(';') 
=> ["ThomasLinde ", " PeterParker ", " Monday"] 

來處理它,你需要strip這樣的數組中的每個值:

"ThomasLinde ; PeterParker ; Monday".split(';').map(&:strip) 
=> ["ThomasLinde", "PeterParker", "Monday"] 
+0

大!這現在工作。你有一個想法如何顯示在它的文本結果一樣: 保姆'@ nanny_name'服務客戶'@'上@ period_name' customer_name'?和每一行之後的段落? – Feidex

+0

很高興幫助,像什麼? –

+0

@Feidex你可以使用特林插值'#{variable}'..檢查我更新的答案。 –