5

我正在创建一个 Sinatra 应用程序,该应用程序采用上传的 CSV 文件并将其内容放入哈希中。当我在我的 app.rb 中引用此哈希时,如下所示:

hash = extract_values(path_to_filename)

我不断收到此错误消息:

哈希的未定义方法“字节大小”:0x007fc5e28f2b90 #object_id

文件:utils.rb 位置:字节大小行:335

我在某处读到这是一个 Webrick 问题。我切换到Thin,错误是一样的。

我的哈希 / CSV 文件非常小,所以这不是问题。

我正在使用红宝石 1.9.3p374。

谢谢!

4

2 回答 2

12

这看起来像#<Hash> 的未定义方法 `bytesize'的副本

Sinatra 期望路由方法返回一个字符串(即最后一行);你不能只返回一个直接的哈希值。

于 2013-06-08T23:58:20.100 回答
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]}
于 2013-06-09T11:41:49.653 回答