通过Ruby on Rails中的表单选择访问文件?

时间:2013-01-31 14:15:09

标签: html ruby-on-rails ruby

我有以下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'

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

1 个答案:

答案 0 :(得分: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 here)。

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

希望有所帮助