我想從我的結果中遍歷每個列名,以放置在我的視圖的第一行。我正在使用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