浏览器或临时图像上的图像渲染?

时间:2010-03-30 16:26:08

标签: ruby-on-rails image charts gruff

我正在尝试制作一个统计页面,其中会显示多个数据和图表 图表需要是图片,以便用户可以将其保存/拖放到他/她的个人报告中。

我正在使用Gruff Graphs for Ruby来生成图表,但我不知道显示结果安全和受保护的最佳方式。

我的一些想法/尝试是:

  1. 将图表保存到文件(jpg,png)? 问题:任何人都可以使用数据(无法访问cron,从时间删除数据)

  2. 在浏览器中渲染(必须在IE上工作)?

  3. 使用javascript(Raphaël-JavaScript库)或Google API并输出PDF报告(需要插件或gem,右)?

  4. 使用send_data? 我试图以内联方式输出其他方式,因为我需要显示其他数据,是否可能?

  5. 感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

虽然这很烦人,但您可以随时删除旧条目作为生成过程的一部分。如果你没有像cron这样的某种后台工作机制,这真的只是你需要做的事情。基于文件“修改时间”进行检查通常是最好的方法,但这也会破坏图像的旧链接。

基于画布的方法明显优于服务器生成的图像。例如,使用类似Flot的内容来构建基于画布的图形,并在IE兼容性所需的位置包含explorercanvas

答案 1 :(得分:0)

我目前正在做同样的事情,并且正在寻找粗暴的服务器来生成我的图表。

我粗暴地在我的控制器中生成一个图像并将图像写入我的公共图像目录,然后只是链接到我视图中的图像。

那就是说,图表是静态图像,我想要一些更有活力的东西。

所以,我最终使用Highcharts jQuery插件(http://www.highcharts.com/)在视图端生成我的图表。 (好多了!)

我只是让我的控制器将我的数组数据传递给视图,并让图表绘制客户端,它更好,并且具有我的客户也使用的所有功能,而不依赖于谷歌的API和闪存。< / p>

当然所有的意见问题! :)

答案 2 :(得分:0)

我使用了粗暴,它非常慢并且消耗了大量的内存。如果你不这么多地改变chrats,那么使用gruff和一些缓存是个好主意,你可以进行页面缓存或片段缓存{ {3}},但我建议您使用谷歌API,有一个宝石来简化工作,http://guides.rubyonrails.org/caching_with_rails.htm。如果您需要用户下载图表我不认为使用graphael或其他人制作图表是个好主意。

答案 3 :(得分:0)

感谢所有的投入。

我想我会在图片来源标签中直接使用Google Charts或通过gem。

再次感谢您的帮助。