Rails - 使用jbuilder时生成的json文件为空

4

我正在尝试使用jbuilder从事件列表中创建一个特定格式的json文件。但无论我在jbuilder文件中放什么,当你访问users/1/events.json时,文件都是空的(只有{})。

我尝试在控制器中添加一个respond to块,但那只会以错误的格式返回事件列表。

我认为路由已经正确设置了,因为日志文件显示当请求/users/1/myevents.json时,myevents.json.jbuilder文件已经成功渲染。此外,当请求.html文件时,myevents.html文件可以正常显示,其中包含所有正确的信息。

我真的很困惑,请帮忙解决这个问题!

以下是所有相关代码:

事件控制器:

def myevents
    @events = current_user.events
end

myevents.json.jbuilder:

Jbuilder.encode do |json|
    json.timeline do
        json.headline current_user.first_name
        json.type "default"
        json.text "A Timeline"
        json.start_date
        json.array!(@events) do |event|
            json.start_date event.start_date
            json.end_date event.end_date
            json.headline event.headline
            json.text event.text
            json.asset do
                json.media event.media
                json.credit event.credit
                json.caption event.caption
            end
        end
    end
end

environment.rb:

Jbuilder.key_format :camelize => :lower

routes.rb:

match 'users/:id/events' => 'events#myevents'

你正在使用哪个版本的Rails? - Tom Chen
3个回答

4

3
据我所知,你可以直接跳过

Jbuilder.encode

这个块,也许一切都会没问题。

我得到了“未定义的本地变量或方法'json'” - Nate

1
搞定了。不知道为什么,它不喜欢Jbuilder.encode do |json|这一行,尽管文档中建议使用这个。但是响应的语法还不太对。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接