不要在 Ruby 工作 "db.results_as_hash = true"

Don't work "db.results_as_hash = true" in 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>

错误是"no implicit conversion of String into Integer"

怎么了?

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

来自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