Я следую руководству Ryan Bates по трансляции ретрансляции для импорта файла excel через рельсовое приложение. Моя версия Ruby - 2.2.4, а версия рельсов - 4.2.6. Я уже установил gem.Импорт файла excel в приложениях для рельсов
Мои приложения \ модели \ user.rb файл:
class User < ActiveRecord::Base
require 'csv'
def self.import(file)
spreadsheet= open_spreadsheet(file)
header=spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row=Hash[[header,spreadsheet.row(i)].transpose]
user=find_by_id(row["id"])||new
user.attributes=row.to_hash.slice(*accessible_attributes)
user.save
end
end
def self.open_spreadsheet(file)
case File.extname(file.original_filename)
#when ".csv" then Roo::Csv.new (file.path nil, :ignore)
when ".xls" then Roo::Excel.new (file.path)
#when ".xlsx" then Excelx.new (file.path, nil, :ignore)
else raise "Unknown file type: #{file.original_filename}"
end
end
end
Мои приложения \ Контроллеры \ users_controller.rb Файл:
class UsersController < ApplicationController
def index
@users=User.all
end
def import
User.import(params[:file])
redirect_to root_url, notice: "Activity data imported!"
end
end
Теперь моя домашняя страница приложение работает должным образом. Но после того, как selectiong файла из файлового броузера, когда я нажав на кнопке «импорт Excel» (я сделал все это в index.html.erb файла) ,, то он показывает следующее сообщение об ошибке:
RuntimeError in UsersController#import
could not locate a workbook, possibly an empty file passed
Пока не удается решить эту проблему. Метод open_spreadsheet уже определен там, то в чем причина ошибки?
по-прежнему та же ошибка ,,, ничего не было – Abhradip
Вы отсутствуете и «заканчиваете» после первого цикла – ryudice
теперь он поставляется с SyntaxError в UsersController # import – Abhradip