我如何在Ruby on Rails中读取文件

时间:2017-03-08 11:56:28

标签: ruby-on-rails readfile

我是rails的新手,我尝试读取一个如下所示的txt.file:

  托马斯林德;彼得帕克;星期一

     

JulkoAndrovic; KeludowigFrau;星期二

     

JohannesWoellenstein; 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,我只能阅读一行?

1 个答案:

答案 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"]