我想从我的结果中遍历每个列名,以放置在我的视图的第一行。我正在使用execute sql方式来查询数据库。如何迭代执行sql结果中的列名
我有这到目前为止,但它不输出什么,我需要:
<% for columns in @results %>
<tr>
<% @results.each do |column, value| %>
<td><%= column %></td>
<% end %>
</tr>
<% end %>
我想从我的结果中遍历每个列名,以放置在我的视图的第一行。我正在使用execute sql方式来查询数据库。如何迭代执行sql结果中的列名
我有这到目前为止,但它不输出什么,我需要:
<% for columns in @results %>
<tr>
<% @results.each do |column, value| %>
<td><%= column %></td>
<% end %>
</tr>
<% end %>
查找:MySQL的/红宝石(http://www.tmtm.org/en/mysql/ruby/)如果你正在迭代MySQL数据库。其他数据库,查找其他驱动程序。纯粹谈到MySQL/Ruby,返回的结果是Mysql::Result
。
您使用each_hash
来迭代此操作,并为该行生成散列。然后你可以使用each_pair迭代散列。例如:
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
我收到一个没有方法错误的rails中的each_pair。 – oprogfrogo 2010-11-04 01:34:38
如果有人可以请说出这一点,谢谢。 – oprogfrogo 2010-11-04 21:28:31
我更改了代码示例。请注意,它使用'result.each_hash'来获取该行的散列值。然后它使用'each_pair'获取密钥(列名)和值来迭代哈希。 – 2010-11-04 23:43:49
来到这里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"]
在这里拯救了我的人生! – 2017-01-02 20:27:21
有什么问题吗? – 2010-11-04 00:29:44
你的查询结果是什么样的? – monocle 2010-11-04 00:32:04
问题是,我试图将每个“列名称”迭代到一个表格单元格。查询可以根据用户选择的条件而有所不同。那么,我将如何去遍历每个结果的每个列名称? – oprogfrogo 2010-11-04 00:36:22