用Javascript表示复杂/嵌套数据
我试图通过JSON将稍微复杂的Rails应用程序发送到JS脚本,以某种有趣的方式呈现页面。假设Rails中的数据是关于人及其资产的,如下所示:用Javascript表示复杂/嵌套数据,javascript,ruby-on-rails,ajax,dictionary,Javascript,Ruby On Rails,Ajax,Dictionary,我试图通过JSON将稍微复杂的Rails应用程序发送到JS脚本,以某种有趣的方式呈现页面。假设Rails中的数据是关于人及其资产的,如下所示: [ {:name => 'Bill Smith', :state => 'KS'} => [ {:type => 'house', :valuation => 150000}, {:type => 'car', :valuation => 10000} ], {:name =>
[
{:name => 'Bill Smith', :state => 'KS'} => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
],
{:name => 'Bubba Jack', :state => 'FL'} => [
{:type => 'boat', :valuation => 12000}
]
]
[{"{:name=>\"Bill Smith\", :state=>\"KS\"}":[{"type":"house","valuation":150000},{"type":"car","valuation":10000}],"{:name=>\"Bubba Jack\", :state=>\"FL\"}":[{"type":"boat","valuation":12000}]}]
在JS方面,我希望能够访问各个字段,但是JS不允许对象的键成为对象,因此data.to_json将所有个人详细信息转换为一个字符串,如下所示:
[
{:name => 'Bill Smith', :state => 'KS'} => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
],
{:name => 'Bubba Jack', :state => 'FL'} => [
{:type => 'boat', :valuation => 12000}
]
]
[{"{:name=>\"Bill Smith\", :state=>\"KS\"}":[{"type":"house","valuation":150000},{"type":"car","valuation":10000}],"{:name=>\"Bubba Jack\", :state=>\"FL\"}":[{"type":"boat","valuation":12000}]}]
我不能做像这样的事情
var people = Object.keys(data);
for(var i=0; i<people.length; i++) {
var totAsset = 0;
var person = people[i];
for(var j=0;j<data[person].length; j++) {
totAssset = totAsset + data[person][j].valuation
}
alert("got person named " +person.name+" having $"+totAsset);
}
var people=Object.keys(数据);
对于(var i=0;i来说,这样组织您的记录不是更容易吗:
@people = [
{:name => 'Bill Smith', :state => 'KS', :assets => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
]},
{:name => 'Bubba Jack', :state => 'FL', :assets => [
{:type => 'boat', :valuation => 12000}
]}
]
然后使用“render:json=>@people”,这将为您提供
{[ "name": 'Bill Smith', "state": 'KS', "assets": [
{"type": 'house', "valuation": 150000},
{"type": 'car', "valuation": 10000},
],
[ "name": 'Bubba Jack', "state": 'FL', "assets": [
{"type": 'boat', "valuation": 12000}
]}
然后访问这些值
'Bill Smith' = people[0]["name"]
'house' = people[0]["assets"][0]["type"]
这样组织您的记录不是更容易吗:
@people = [
{:name => 'Bill Smith', :state => 'KS', :assets => [
{:type => 'house', :valuation => 150000},
{:type => 'car', :valuation => 10000}
]},
{:name => 'Bubba Jack', :state => 'FL', :assets => [
{:type => 'boat', :valuation => 12000}
]}
]
然后使用“render:json=>@people”,这将为您提供
{[ "name": 'Bill Smith', "state": 'KS', "assets": [
{"type": 'house', "valuation": 150000},
{"type": 'car', "valuation": 10000},
],
[ "name": 'Bubba Jack', "state": 'FL', "assets": [
{"type": 'boat', "valuation": 12000}
]}
然后访问这些值
'Bill Smith' = people[0]["name"]
'house' = people[0]["assets"][0]["type"]