私のRails 2.1.0アプリケーションでも同様の要件がありました。扱うでしょう
class Upload < AR::Base
has_attached_file :doc,
:url => "datafiles/:id",
:path => ":rails_root/uploads/:id/:style/:basename.:extension"
# validations, if any
end
生成UploadsController:
require 'spreadsheet'
module DataReader
def read_bata(path_to_file)
begin
sheet = book.worksheet 0
sheet.each 2 do |row|
unless row[0].blank?
# Create model and save it to DB
...
end
end
rescue Exception => e
puts e
end
end
end
は、モデルのアップロードを持っていた:私はこのようなモジュールを書いた「LIB」フォルダに
:私は、次のようにして、それを解決しましたファイルをアップロードし、適切な場所に保存します。私はファイルをアップロードするためにPaperclipを使用しました。 'スプレッドシート' ライブラリhereとhereについて
class UploadsController < AC
include DataReader
def new
@upload = Upload.new
end
def create
@upload = Upload.new(params[:upload])
@upload.save
file_path = "uploads/#{@upload.id}/original/#{@upload.doc_file_name}"
@upload.read = DataReader.read_data(file_path)
# respond_to block
end
end
読みます。適切な改善を行い、このテクニックをRails 3で動作させることができます。これが役立つことを願っています。
こんにちは、これは使いやすいようです...最後のdo-blockのロジックを説明できますか...少し難解です。 – Angela
も... @ worksheet.rowに格納されているもの)...列単位の配列ですか? – Angela
もちろん、@workheet.row(index)はindexの行を返します。したがって、indexが0の場合は最初の行、1の場合は2番目の行などを返します。最後のブロックはindex = 0から始まり、untilまでループしますindexはlast_row_indexです。つまり、Excelワークシートの最後に使用された行のインデックスです。私の例では、実際に列で何もしません、私はあなたがそれにアクセスする方法を示しています。 – DanneManne