【发布时间】:2016-05-19 22:21:49
【问题描述】:
我一直在努力解决这个问题,正在寻求帮助。我有一个运行良好的 Dashing Wallboard。我正在尝试添加一个显示数据列表的小部件,但小部件和 history.yml 文件中都没有显示任何数据。
我的其他小部件都从同一个 SQL 服务器中提取数据,这就是为什么下面省略了连接信息:
我的 .rb 作业文件中有以下代码:
results = client.execute("
SELECT [data] as name, [data2] as value
FROM [DB]
Where [Conditions]
GROUP BY [Tier];
")
datalist = results.map do |row|
row = {
:label => row['name'],
:value => row['value']
}
end
send_event('listofdata', { items: datalist } )
我的仪表板小部件如下所示:
<li data-row="2" data-col="3" data-sizex="1" data-sizey="2">
<div data-id="listofdata" data-view="List" data-title="This is a list of data" data-unordered="true"></div>
</li>
我的 SQL 查询的输出如下所示:
Tier 1 10
Tier2 6
Tier 3 31
数据类型为 varchar 和 int。我确实在 name 列中包含了空格并且没有空格,以表明查询的结果确实包含空格。
我也尝试过像这样做 ruby 方面,但还是不行。
results.each do |row|
send_event('listofdata', { label: row['name'], value: row['value'] })
end
无论我做什么,我都无法在小部件中显示任何数据。 我在这里遗漏了一些非常明显的东西吗?
更新 1: 也试过这个,没用:
datalist = results.each(:symbolize_keys => true, :as => :array, :cache_rows => true, :empty_sets => true) do |rowset| end
data_count = Array.new
for j in (0...results.affected_rows)
data_count << {"label" => datalist[j].at(0), "value" => datalist[j].at(1).to_i}
end
【问题讨论】:
-
-
您也可以尝试使用并非来自数据库的手工数据创建
send_event('listofdata', ...)命令,例如send_event('listofdata', { items: [ { label: 'test label', value: 'test value' }, { label: 'test label 2', 'test value 2' }] }) -
感谢 cmets kimmmo。我尝试使用您的代码,但它仍然没有在列表小部件中显示数据。我相信这个问题可能与创建哈希的方式以及 List 小部件的预期有关。我创建了一个独立的 ruby 脚本来查询数据并将哈希值放到屏幕上。它的格式似乎与 dashing 所寻找的格式不同。
标签: sql-server ruby ubuntu sinatra dashing