我正在尝试使用roo gem来处理由外部方上传的.xlsx电子表格.我收到以下错误:
LoadError(无法加载此类文件 - zip/zipfilesystem):
我发现了很多类似于这个的问题(比如无法加载这样的文件 - zip/zip),我试图按照他们的解决方案.到目前为止,无济于事.
我最初在控制器中需要'roo',在得到这个错误之后尝试了'zip/zip','zip/zipfilesystem',只是'zip'.这些似乎都没有解决任何问题.我还尝试添加:require =>'zip',:require =>'zip/zipfilesystem',:require =>'zip/zip'到Gemfile,但这些似乎都没有改变.这是一些相关的代码:
在Gemfile中:
# for spreadsheet upload management
gem 'roo'
gem 'rubyzip'
gem 'spreadsheet'
gem 'nokogiri'
Run Code Online (Sandbox Code Playgroud)
安装版本:
nokogiri (1.6.0)
roo (1.12.1)
rubyzip (1.0.0)
spreadsheet (0.8.9)
Run Code Online (Sandbox Code Playgroud)
在控制器中:
require 'roo'
module BatchOrderProcessing
class DataFilesController < ApplicationController
def create
# some code here ...
when ".xlsx"
spreadsheet = Roo::Excelx.new(uploaded_io.path, nil, :ignore)
header = spreadsheet.row(1)
if # some validation stuff...
puts "spreadsheet format inappropriate"
redirect_to # some place
end
process_datafile(fname, spreadsheet)
# more code …Run Code Online (Sandbox Code Playgroud) 这是家庭作业的一部分.好吧,我的作业无法正常工作,所以我已经把一个片段拿出来并开始用它来弄清楚什么是错的.
在C语言的Linux上我试图打开/创建一个文本文件,给它写一些东西,关闭它,在读/写和追加模式下打开它,然后在它的末尾添加任何东西(在这个例子中,字符串",老兄").但是没有附加任何内容,但write方法也没有抛出错误.我不确定是什么.
这是代码:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#define BUFFSIZE 4096
int main(){
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
int fd = open("tempfile.txt", O_RDWR | O_CREAT, mode);
char buf[BUFFSIZE] = {'t', 'h', 'y', ' ', 'f', 'a', 'l', 'l'};
size_t n = sizeof(buf);
if(write (fd, buf, n) < 0){
printf("Error in write\n");
printf("%s", strerror(errno));
return 1;
}
close(fd);
int fd2 = …Run Code Online (Sandbox Code Playgroud) 我是Ruby on Rails的新手,使用rails 3.2.13和ruby 1.9.3p392.我正在尝试构建一个应用程序使用的引擎,这可能会导致我的困惑.
引擎名称为sales_app.我有一个页面将大量数据发布到sales_app/sales #create以创建销售.在销售控制器的创建操作中,我做了一些数据处理并尝试实例化Sale对象.我没有从模型中创建对象,而是获取了一个我甚至不知道我正在调用的删除方法的NoMethodError异常.请帮忙.
以下是相关细节.我的销售/新页面将以下参数发布到sales #create:
{"sale"=>{"name"=>"Test",
"desc"=>"This is a test",
"start_date"=>"05/30/2013",
"end_date"=>"05/31/2013",
"start_time"=>"07:00",
"end_time"=>"08:00",
"products"=>""},
"create"=>"Create Sale"}
Run Code Online (Sandbox Code Playgroud)
Sales控制器的创建操作具有以下内容:
def create
if params[:create] == "Create Sale"
# process the data - add a start and end to params
#format = "%m/%d/%Y %H:%M:%S"
params[:sale][:start] = DateTime.strptime("#{params[:sale][:start_date]} #{params[:sale][:start_time]}:00", '%m/%d/%Y %H:%M:%S')
params[:sale][:end] = DateTime.strptime("#{params[:sale][:end_date]} #{params[:sale][:end_time]}:00", '%m/%d/%Y %H:%M:%S')
@sale = Sale.new(:name => params[:sale][:name], :desc => params[:sale][:desc], :start => params[:sale][:start], :end => params[:sale][:end])
if @sale.save
redirect_to @sale
else …Run Code Online (Sandbox Code Playgroud)