ruby-on-rails – 计算CSV文件的长度(行数)?

我有一个表单(Rails),它允许我使用file_field加载.csv文件.
在视图中:
<% form_for(:upcsv,:html => {:multipart => true}) do |f| %>
    <table>
        <tr>
            <td><%= f.label("File:") %></td>
            <td><%= f.file_field(:filename) %></td>
        </tr>
    </table>
        <%= f.submit("Submit") %>
    <% end %>

点击提交将我重定向到另一个页面(create.html.erb).该文件加载正常,我能够读取的内容,在这第二页.我试图在第二页显示.csv文件中的行数.

我的控制器(半伪代码):

class UpcsvController < ApplicationController
    def index
    end

    def create
        file = params[:upcsv][:filename]
        ...
        #params[:upcsv][:file_length] = file.length # Show number of lines in the file
        #params[:upcsv][:file_length] = file.size
        ...
    end
end

当我的文件只包含7行时,file.length和file.size都会返回’91’.从我阅读的Rails文档中,一旦点击Submit按钮,Rails创建一个上传文件的临时文件,params [:upcsv] [:filename]包含temp / uploaded文件内容,而不是文件.而且我不知道如何提取原始文件中的行数.获取文件中行数的正确方法是什么?

我的create.html.erb:

<table>
    <tr>
        <td>File length:</td>
        <td><%= params[:upcsv][:file_length] %></td>
    </tr>
</table>

我在Rails真的很新(上周刚刚开始),所以请忍受我的愚蠢的问题.

谢谢!

更新:显然,我的文件中的’91’是个人字符(包括回车)的数量.我的文件中的每一行都有12位数字1换行= 13. 91/13 = 7.

解决方法

另一种读取行数的方式是
file.readlines.size

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...