我正在尝试从结果中遍历每个列名称以放置在我视图的第一行。我正在使用execute sql方式来查询数据库。
到目前为止,我已经得到了这个,但它没有输出我需要的东西:
<% for columns in @results %>
<tr>
<% @results.each do |column, value| %>
<td><%= column %></td>
<% end %>
</tr>
<% end %>
答案 0 :(得分:3)
对于在问到这个问题2.5年后来到这里的人们,我能够使用Rails 3.2.13和Ruby 1.9.3-p194来做到这一点:
result=ActiveRecord::Base.connection.select_all("SELECT id AS 'user_id', first_name AS 'name' FROM users LIMIT 1")
result.each do |row|
row.each do |k, v|
puts "column #{k} contains #{v}"
end
end
结果:
column user_id contains 1
column name contains Me
[{"user_id"=>1, "name"=>"Me"}]
访问它:
result.first["user_id"]
如果有3个结果,你想获得第二个结果:
result[1]["user_id"]
答案 1 :(得分:0)
查看:MySQL / Ruby(http://www.tmtm.org/en/mysql/ruby/),如果您正在迭代MySQL数据库。其他数据库,查找其他驱动程序。纯粹谈到MySQL / Ruby,返回的结果是Mysql::Result
。
您使用each_hash
对此进行迭代,并且该块会为该行生成一个哈希值。然后,您可以使用each_pair迭代哈希。 E.g:
result = MyModel.connection.execute('select * from foos')
result.each_hash do |row|
row.each_pair do |k, v|
puts "column #{k} contains #{v}"
end
end