小编Mat*_*ias的帖子

计算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 %>
Run Code Online (Sandbox Code Playgroud)

单击"提交"会将我重定向到另一个页面(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
Run Code Online (Sandbox Code Playgroud)

双方file.lengthfile.size返回"91"时,我的文件只包含7条线.在我阅读的Rails文档中,单击"提交"按钮后,Rails会创建上载文件的临时文件,其中params[:upcsv][:filename]包含临时/上载文件的内容,而不包含文件的路径.而且我不知道如何提取原始文件中的行数.获取文件中行数的正确方法是什么?

我的create.html.erb:

<table>
    <tr>
        <td>File length:</td>
        <td><%= params[:upcsv][:file_length] %></td>
    </tr>
</table> …
Run Code Online (Sandbox Code Playgroud)

ruby csv ruby-on-rails

20
推荐指数
4
解决办法
2万
查看次数

标签 统计

csv ×1

ruby ×1

ruby-on-rails ×1