(可能涉及的方面比较多,不知道是不是应该放这个区)
最近在学YUI,里面的dataSource和dataTable,看他的[url=http://developer.yahoo.com/yui/examples/datatable/dt_dynamicdata.html]演示[/url]很爽的样子,于是就想把它和ROR结合起来,但在尝试服务器端分页的时候出了问题,说data error。
现在困惑我的是,以下几点我都不是很懂:
1.ROR生成的JSON格式是不是“对的”?
因为看到了很多种生成JSON的方法,有直接to_json的,还有gem install json之后再parse的,甚至还有一个修正“ruby生成的JSON不带引号”问题的方法[code="ruby"]ActiveSupport::JSON.unquote_hash_key_identifiers = false[/code]
Google的时候还看到有的说是render :text => "xxx",有的说是render :json => "xxx",也不知道到底听谁的……
还有这样的:
[code="ruby"]irb(main):001:0> Product.find(:all).to_json
=> "[\"#Product:0x4711cf0\",\"#Product:0x4711cc8\",\"#Product:0x4711ca0\",\"#Product:0x4711c78\",\"#Product:0x4711c50\",\"#Product:0x4711c28\",\"#Product:0x4711c00\",\"#Product:0x4711bd8\"]"[/code]
所以,问题一是:[color=darkred][b]怎么才能用ROR生成出标准的JSON格式来啊?[/b][/color]
2.JS里调用,YUI用的是PHP版:
[code="javascript"] var myDataSource = new YAHOO.util.DataSource("assets/php/json_proxy.php?");
[/code]
我试图调用它来当试验数据,但不行,貌似是它只能站内引用;
我又试图下载这个文件来研究,但下载下来只是一个文本形式的东东,感觉下载下来的已经是输出结果了。
也有人写过JAVA版的,但问题同上……
我也找到过ROR版的调用,说是这样:
[code="javascript"] var myDataSource = new YAHOO.util.DataSource("http://localhost:3000/product/list/index.json?");
[/code]
同时在Controller里写:
[code="ruby"]
@products = Product.find(:all)
respond_to do |format|
format.html
format.xml { render :xml => @products }
format.json { render :text => @products }
end
[/code]
但由于不知道:text对还是:json对,并且无论我用哪种,生成出来的都会有奇怪的属性而导致跟YUI的例子生成的结果格式不一样……
所以,问题二是:[color=red][b]在YUI(或者说Javascript)那边,应该怎么调用“用ROR生成好的JSON数据”呢?[/b][/color]
(其实在YUI里面还有问题,不过如果先把这两点最大的疑惑弄清楚,剩下的就可以自行研究了……)