2013-02-12 34 views
0

我试图使用jbuilder gem来格式化json输出。rails jbuilder被调用id为零

控制器

class LocationsController < ApplicationController 
def tree 
    @locations = Location.all 
end 

tree.json.jbuilder

Jbuilder.encode do |json| 
    json.id @location.id 
    json.name @location.name 
end 

试验使用URL:

http://localhost:5000/locations/tree.json 

结果:

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id 
Extracted source (around line #2): 

1: Jbuilder.encode do |json| 
2: json.id @location.id 
3: json.name @location.name 
4: end 

回答

0

您似乎没有在您发布的代码中定义@location
你应该遍历你的位置,的JBuilder可以让你做到这一点,例如像这样:

Jbuilder.encode do |json| 
    json.locations @locations do |location| 
    json.id location.id 
    json.name location.name 
    end 
end 

看到docs,如果你想有一个平坦的阵列来代替。

+0

我试过这个改变。我最终得到了结果= {} – Reddirt 2013-02-13 14:25:24

+0

我删除了第一行和最后一行,现在它可以工作。谢谢 – Reddirt 2013-02-13 14:36:38