【问题标题】:Ruby parse CSV file to print out the rowsRuby 解析 CSV 文件以打印出行
【发布时间】:2013-04-01 19:41:34
【问题描述】:

我的 Rails 应用程序中有一个文件上传,我想在上传正常的情况下解析 CSV 文件。您可以看到下面的评论,指出我想在哪里读取 CSV 文件的行。我怎样才能做到这一点?我使用carrierwave进行文件上传。

我是这样安装的

mount_uploader :file, LCFileUploader

这是我目前拥有的代码

require 'CSV'
class LCFilesController < ApplicationController
    def new
        authorize! :create, :lc_file
        @lc_file = LCFile.new
    end

    def create
        authorize! :create, :lc_file
        puts params
        @lc_file = LCFile.new(params[:lc_file])
        @lc_file.user_id = current_user.id
        if @lc_file.save

            #PARSE CSV HERE TO PRINT OUT THE ROWS OF THE CSV FILE
            CSV.foreach(@lc_file.file.path) do |row|
                puts row
            end

            redirect_to lc_path, :notice => 'New lc created!'
        else
            render :new
        end
    end
end

我得到这个错误:

undefined method `find_all_by_team_id' for #<Class:0x007fe14c40d848>

【问题讨论】:

  • (应该关闭问题。我遇到的错误与此问题中发布或询问的内容无关)

标签: ruby-on-rails ruby csv


【解决方案1】:

您可以使用CSV class:

puts CSV.read(@lc_file.file.path)

或一次一行:

CSV.foreach(@lc_file.file.path) do |row|
  puts row
end

除了 CSV 生成之外,还有一些问题:

  • 在您发送一些输出后重定向将不起作用。但即使这样做了,也不会看到输出,因为您正在重定向。
  • 您重定向到的路径不正确(我相信这就是您收到该错误的原因)。我想你想要lcfiles_pathlcfile_path(@lc_file) 之类的东西。运行 rake routes(与运行 rails 控制台的方式相同)以查看所有可用路由的列表。

现在,如果您仍有问题,我建议发布另一个问题,因为这个问题主要是关于 CSV 生成,应该使用我在此答案开头发布的代码来解决。

【讨论】:

  • 这给了我#<0x007fe14c2c4658>
猜你喜欢
  • 2022-07-12
  • 2016-02-03
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多