我正在创建一个Sinatra应用程序,它采用上传的CSV文件并将其内容放入哈希值。当我在app.rb中引用此哈希时,如下所示:
hash = extract_values(path_to_filename)
我不断收到此错误消息:
哈希的未定义方法`bytesize':0x007fc5e28f2b90 #object_id
file:utils.rb location:bytesize line:335
我在某处读到这是一个Webrick问题。我切换到Thin,错误是一样的。
我的哈希/ CSV文件的大小非常小,所以它不是问题。
我正在使用ruby 1.9.3p374。
谢谢!
答案 0 :(得分:10)
这看起来像是Undefined method `bytesize' for #<Hash>
的副本Sinatra期望路由方法返回一个字符串(即最后一行);你不能只返回一个直接哈希。
答案 1 :(得分:3)
解决了:
1)将集合传递给视图:
get '/file/:filename' do
filename = params[:filename]
@rows = extract_values(testfile_path(filename))
haml :search_term
end
2)在视图模板(erb / haml)中迭代它:
%ul
- @rows.each do |hash|
%li
Id: #{hash[:id]}, Keyword: #{hash[:keyword]}, Searches: #{hash[:searches]}