【问题标题】:Rails upload CSV file with headerRails上传带有标题的CSV文件
【发布时间】:2012-11-26 17:09:02
【问题描述】:

我正在使用 Ruby 1.9.2 和 Rails 3.2.1。

我想创建一个视图来上传 CSV 或制表符分隔的文件,并使用表格或分页显示在同一页面上显示文件的内容,然后在 JavaScript 中处理该数据。

我该怎么做?请带我浏览你拥有的任何代码示例,我也是 Ruby 的菜鸟。

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller csv


    【解决方案1】:

    首先,编写一个视图来上传您的文件。您可以为此使用Paperclip

    假设您有资源Csv,您的上传表单可能如下所示:

    <%= form_for @csv, :url => csv_path, :html => { :multipart => true } do |form| %>
      <%= form.file_field :attachment %>
    <% end %>
    

    你的模型:

    class Csv < ActiveRecord::Base
      attr_accessible :attachment
      has_attached_file :attachment
    end
    

    您的控制器操作:

    def create
      @csv = Csv.create( params[:csv] )
      # your save and redirect code here
    end
    
    def show
      @csv = Csv.find(params[:id])      
    end
    

    有了这个,你可以在你的视图中使用这样的东西:

    CSV.foreach(@csv.attachment.path) do |row|
      # use the row here to generate html table rows
    end
    

    注意:这只是关于如何完成此操作的一般概念,您需要将资源添加到您的路线、安装和配置 Paperclip gem 等 - 阅读有关如何完成所有这些操作的文档。

    【讨论】:

    • 我是个菜鸟,所以我有一些关于使这个东西工作的基本问题:你所说的资源是什么意思?这是控制器吗?我应该使用什么 rails generate 命令?
    • 我不知道为什么当有人试图学习 Rails 时,人们会到处指指点点。我不想用回形针。我如何在不使用回形针的情况下制作这个?
    • 因为宝石让很多事情变得更简单、更干净。如果你想学习 Rails,就去阅读the guidesform helpers 指南中描述了上传文件。还有manyquestions已经在SE上询问过。对于一般介绍,还有Rails tutorial
    【解决方案2】:

    只需使用漂亮的 Ruby gem 来解析 CSV 文件。这应该为您指明正确的方向。 http://fastercsv.rubyforge.org/

    【讨论】:

    • FasterCSV 现在作为 CSV module 内置于 Ruby 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    相关资源
    最近更新 更多