标签: roo

Roo gem文件.xlsx不存在

我使用cloud9 ide在轨道上使用红宝石!

我正在测试gem'roo',以将excel文件导入数据库。在我做之前,我想测试一下这个宝石作品。

宝石文档:https : //github.com/roo-rb/roo
但带文件有问题!

错误消息是这样的

MersmapController#index中的IOError

文件../assets/test.xlsx不存在


这是我的代码!

require 'roo'

class MersmapController < ApplicationController         


  def index
      xlsx = Roo::Excelx.new("../assets/test.xlsx")
      @show = xlsx.info
  end
end
Run Code Online (Sandbox Code Playgroud)

并在index.erb中

<h1> <%= @show %> </h1>
Run Code Online (Sandbox Code Playgroud)



我使用“ images.jpg”(图像文件)测试此路径

当我在index.erb中写入图像文件的路径时,它肯定可以正常工作!

我试过了

xlsx = Roo::Excelx.new("../assets/excel/test.xlsx")

xlsx = Roo::Excelx.new("../../app/assets/test.xlsx")

xlsx = Roo::Excelx.new("../../app/assets/excel/test.xlsx")
Run Code Online (Sandbox Code Playgroud)

...... 所有的事情!!

但是最后我不知道是什么问题...如果您能帮助我,我将不胜感激!

ruby ruby-on-rails import-from-excel roo

6
推荐指数
1
解决办法
1240
查看次数

Carrierwave:如何卸载上传器以进行批量上传

我有一个具有:image属性的产品模型。它使用载波进行图像上传:

mount_uploader :image, ImageUploader

这适用于我的新建/编辑表单,但由于我有一个使用roogem 进行 excel 上传的批量上传选项,mount_uploader 不允许image填充该列。每当它是 excel 批量上传时,我都需要禁用/卸载上传器。以下是我的 excel 上传的执行方式:

def self.import(file)
  spreadsheet = Roo::Spreadsheet.open(file.path)
  header = spreadsheet.row(1)
  (2..spreadsheet.last_row).each do |i|
    row = Hash[[header, spreadsheet.row(i)].transpose]
    product = find_by(id: row["id"]) || new
    product.attributes = row.to_hash
    product.save!
  end
end
Run Code Online (Sandbox Code Playgroud)

excel upload ruby-on-rails carrierwave roo

5
推荐指数
0
解决办法
196
查看次数

nil的未定义方法`fetch_value':使用Roo时的NilClass

我正在尝试使用Roo将Excel电子表格中的数据导入Rails应用程序中的表(data_points).

我收到错误:

undefined method `fetch_value' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

并且该错误在行引用了我的data_point.rb文件(参见下面的完整代码摘录):

data_point.save!
Run Code Online (Sandbox Code Playgroud)

"应用程序跟踪"说:

app/models/data_point.rb:29:in `block in import'
app/models/data_point.rb:19:in `import'
app/controllers/data_points_controller.rb:65:in `import'
Run Code Online (Sandbox Code Playgroud)

我很困惑,因为我的整个应用程序中的"查找所有"都没有显示fetch_value的实例

这是我的应用程序中的其他代码:

在我的模型中,data_point.rb:

class DataPoint < ActiveRecord::Base
attr_accessor :annual_income, :income_percentile, :years_education

def initialize(annual_income, income_percentile, years_education)
    @annual_income = annual_income
    @income_percentile = income_percentile
    @years_education = years_education
end

def self.import(file)
    spreadsheet = open_spreadsheet(file)
    header = spreadsheet.row(1)
    (2..11).each do |i| 
        annual_income = spreadsheet.cell(i, 'A')
        income_percentile = spreadsheet.cell(i, 'B')
        years_education = spreadsheet.cell(i, 'C')
        data_point = DataPoint.new(annual_income, income_percentile, years_education)
        data_point.save!
    end
end 

def self.open_spreadsheet(file)
    case File.extname(file.original_filename)
    when ".xlsx" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails roo

4
推荐指数
3
解决办法
6639
查看次数