Ruby on Rails - 在File.open上添加限制,顺序和总和

时间:2016-10-18 10:47:49

标签: ruby-on-rails ruby file

在我的应用程序中,我有一个.txt文件,我在用户个人资料视图中open/read。该.txt文件包含一些数字。

这是我到目前为止所做的:

f = File.open("public/users/14/user.txt", "r")
- f.each_line do |d|
     %p= d

我可以put输出该文件中的所有数字。是否可以添加limit& order (start from bottom to top)

我试过了:

f.limit(4).order('DESC').each_line do |d|

File.open("public/users/14/user.txt", "r").limit(5)

当我尝试这些时,我收到错误:undefined method limitundefined method order

是否也可以sum该文件中的所有数字?

3 个答案:

答案 0 :(得分:1)

这应该有效:

@lines = IO.readlines('public/users/14/user.txt').sort.reverse.first(4)

您应将上述内容放入控制器并在视图中使用:

- @lines.each do |line|
  %p= line

答案 1 :(得分:0)

这些是rails提供的ActiveRecord方法。我建议你阅读ruby的IO文档。 Here是文档。

语法类似于read(name, [length [, offset]] ) → string

并且使用就像IO.read("testfile", 20, 10)

这里20是字节长度,10是偏移量。

答案 2 :(得分:0)

您可以在这种情况下使用范围。在这个例子中,它从第4行从底部一直读到最后一行。

File.open(FILE) do |f|
  f.readlines[-4..-1]
end