问题标签 [roo-gem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 在 Rails 测试环境中加载 .xlsx 文件时临时文件损坏
我正在创建功能测试(使用 Rspec/Capybara),并在打开和读取 .xlsx 文件的功能上遇到此问题。
失败/错误:
当 ".xlsx" 然后 Roo::Excelx.new(file.path, nil, :ignore)
否则提出“Tipo de arquivo desconhecido:#{file.original_filename}”
Zip::ZipError:未找到中央目录签名的 Zip 结尾
此错误仅在运行测试时发生。它在本地和生产中完美运行。
我发现此错误的一些可能原因是文件损坏和错误的文件扩展名。
发生错误的方法:
考试:
加载文件时,它应该将我重定向到加载数据的不同页面。
我在这里缺少任何配置吗?
当我测试这种行为(比较测试和开发环境)时,我发现了这一点:
该文件已正确附加到表单。然后,上传时保存为临时文件,但测试过程创建的临时文件已损坏(我无法手动打开它)。
heroku - 使用 Heroku 和 Amazon S3 上的 Active Storage 使用上传的 Roo gem 打开远程文件
我正在使用ROO gem 来解析用户在 Heroku 上上传的 Excel 文件(使用 AWS S3 的 Active Storage)。
由于我在 Heroku 上,我无法在文件系统上下载它然后解析它。如何从 HTTP 打开它?
模型
ruby-on-rails - 如何在导入期间向 Ruby on Rails 模型添加临时属性
我使用 roo gem 从 xlsx 文件中导入数据。但在某些情况下,xlsx 文件中可用的列与目标模型不匹配。有些列需要连接或查找......文件中的列比目标模型中的多。这是我的代码:
如何临时添加虚拟属性以支持实际输入文件结构并在保存处理记录之前进行一些计算?
感谢帮助!
ruby-on-rails - 使用 Roo gem 导入 CSV 时拒绝不在关联表中的项目而不是创建新记录
我正在使用roo-gem
导入以下设计的作者电子表格:
我在数据库中有名为 authors
,的表states
,publishers
并且genres
各个 excel 列中的数据映射到这些表。如您所见,第一行表头非常详细,因为上传数据到authors
表中的用户不是很精通。因为这么长的表头名称无法映射到表中的关联列中,所以我在 excel 模板中包含了第二行,然后在Author
模型中添加了方法,如下所示:
这里是authors_import.rb
:
这是我的问题:当用户在相应的or表中找不到的 excel 模板中添加任何publisher
or时,该条目将被添加到表中,这是我不想要的。如果列出所有或来自应用程序,我会发现几个在导入期间创建的不应该存在的条目。excel 模板具有出版商和流派的下拉列表,就像它们出现在数据库中的相应表中一样。一种解决方案是锁定模板,但在目前的情况下这是不可能的。genre
publishers
genres
publishers
genres
我认为first_or_create
这是唯一会在找不到新记录的情况下添加新记录的方法,但似乎即使该first
方法在这里的行为也相同。
方法中是否有一些模型验证或调整可以防止未经授权publishers
和genres
被创建?
谢谢
ruby-on-rails - 在 Rails 5.2 上使用 roo 读取电子表格时如何避免导入 nil 对象?
我的应用程序根据值列表(字典)管理分层分类。在某些时候,我需要从 Excel 工作表中导入父子关系,并创建持久的 ValuesToValues 对象。
基于 Ryan Bates 的RailsCast 396,我创建了主循环为的导入模型:
问题是,当遇到没有父值的根值时,循环会创建一个 nil 对象,该对象不会通过后面的验证。
如何构建循环以仅考虑父单元格不为空的行?
ruby-on-rails - Ruby on Rails - Roo gem | 问题打开活动记录附件
地位:
- 我有一个简单的新 Ruby On Rails 应用程序
- 我需要从 MS Excel 以 .xlsx 格式导入一些数据
- 我通过一个名为“excel”的属性将上传到 ActiveRecord 作为附件编程
- 我找到了一个应该打开附件的
gem
调用Roo
- ...通过:
Roo::Excelx.open()
命令 - 然后执行文件的访问部分
问题:
Roo::Excel.open()
不适用于:
Roo::Excel.open(excel)
Roo::Excel.open(excel.attachment)
执行打开的正确命令是ActiveRecord::Attachment
什么?
ruby-on-rails - 在 Ruby 中读取大 XLSX 文件第一行的最快方法
我需要能够在 Ruby on Rails 应用程序中非常快速地读取大 xlsx 文件(350k x 12 单元格,~30MB)中的第一行(标题)。我目前正在使用 Roo gem,这对于较小的文件来说很好。但是对于这么大的文件,它需要 3-4 分钟。有没有办法在几秒钟内做到这一点?
编辑:
- 我尝试了其他宝石:
- rubyXL 花了几分钟
- 小溪是最快的,有 30 多岁。但在控制器中仍然无法使用
编辑2:
- 我最终在工作中使用小溪并在控制器中轮询结果。感谢Tom Lord建议小溪