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を参照してください。

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

ファイルをアップロードして取得するには、' paperclip ' gem (railscast here )を使用することもできます。

それはかなり古いものですが、十分にサポートされ、あまり変わっていない尊敬される宝石です.

それが役立つことを願っています

于 2013-01-31T14:16:42.980 に答える