【发布时间】:2014-08-12 21:00:59
【问题描述】:
在我的 Rails 4.1.1 应用程序(其中包含 jbuilder gem)中,json 视图总是输出表中的所有列,忽略 app/views/[model]/*.json.jbuilder 文件。
在 routes.rb 中,我有:
resources :workshops do
resources :memberships
resources :events
end
在 events_controller.rb 中,我有:
# GET /workshop/:workshop_id/events
# GET /workshop/:workshop_id/events.json
def index
@events = @workshop.events
respond_to do |format|
format.html
format.json { render json: @events }
end
end
我在控制器的“before_action”中设置了 @workshop 变量。
当我访问/workshops/f00/events 时,它按预期以 HTML 格式显示。
如果我制作文件,app/views/events/index.json.jbuilder:
json.events do
end
...当我访问/workshops/f00/events.json 时,我希望输出为空。但是,我以 JSON 格式获取整个 @events 的内容。
我希望看到的只是输出特定字段,给定一个包含以下内容的 app/views/events/index.json.jbuilder:
json.array!(@events) do |event|
json.extract! event, :id, :title, :description
json.start event.starts_at
json.end event.ends_at
json.url workshop_event_url([@workshop, event], format: :json)
end
...但是无论 .jbuilder 文件的内容如何,输出总是相同的。谁能告诉我为什么我的 .jbuilder 文件被忽略了,以及如何让它工作?
【问题讨论】:
标签: ruby-on-rails json ruby-on-rails-4 jbuilder