不要在Ruby中使用“db.results_as_hash = true”

时间:2015-08-13 15:28:35

标签: ruby sqlite sqlite3-ruby

我连接到数据库并将db.results_as_hash更改为true

db = SQLite3::Database.new 'barbershop.sqlite'
db.results_as_hash = true

但它不显示哈希,它是简单的数组。 而且不工作

<% @results.each do |row| %>
    <tr>
        <td><%= row['Name'] %></td> 

工作代码是

<% @results.each do |row| %>
    <tr>
        <td><%= row[1] %></td>

错误是“没有将String隐式转换为整数”

怎么了?

Ruby 2.1.5p273,SQLite版本3.8.5,MacOS X Yosemite

1 个答案:

答案 0 :(得分:2)

来自repo you posted。你实际上没有设置那个标志。您问题中的代码不是您正在运行的代码。没有db变量,第一行有return,所以第二行永远不会运行。

def get_db
  return SQLite3::Database.new 'barbershop.sqlite'
  db.results_as_hash = true
end

我猜这只是编译因为最后一行没有执行。试试这个:

def get_db
  db = SQLite3::Database.new 'barbershop.sqlite'
  db.results_as_hash = true
  db
end