Sinatra:Hash的未定义方法字节大小

时间:2013-06-06 16:45:07

标签: ruby hash sinatra thin webrick

我正在创建一个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。

谢谢!

2 个答案:

答案 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]}