0

我有以下 Ruby 代码,其中包含一个选择文件的表单:

 <%= form_for :import, :url=>{:controller=>"user", :action=>"upload"}, :html => { :multipart => true } do |f| %>
        <div class= "field">
            <%= f.file_field :import %>
            <%= submit_tag 'Import' %>
        </div>

在我的控制器内部,我试图调用用户从本地磁盘中选择的文件。
当我给它文件时,下面的代码有效:

book = Spreadsheet.open 'c:/myexcel.xls'

但我不确定如何在控制器内部调用从表单中选择的文件。
请帮忙

4

1 回答 1

2

可以使用CarrierWave做到这一点,请参阅 railscast here

下面是从 Excel 电子表格导入数据的代码:

def upload
    require 'spreadsheet'
    Spreadsheet.client_encoding = 'UTF-8'
    file_to_import = params[ :import ][ :import ]
    file = FileUploader.new
    file.store!(file_to_import)
    book = Spreadsheet.open "#{file.store_path}"
    sheet = book.worksheet 0
    sheet.each 1 do |row|
        @user = User.new(:code => row[0], :name => row[1], :status => row[2], :account => current_user.account).save
  end

或者,对于上传文件和检索它们,您可以使用“回形针”gem(此处为 railscast )。

它已经很老了,但它是一个受人尊敬的宝石,得到了很好的支持并且没有太大变化。

希望有帮助

于 2013-01-31T14:16:42.980 回答