Ruby on rails 忽略Rails 4*.json.jbuilder文件
在我的Rails 4.1.1应用程序(包括jbuilder gem)中,json视图总是输出表中的所有列,忽略Ruby on rails 忽略Rails 4*.json.jbuilder文件,ruby-on-rails,json,ruby-on-rails-4,jbuilder,Ruby On Rails,Json,Ruby On Rails 4,Jbuilder,在我的Rails 4.1.1应用程序(包括jbuilder gem)中,json视图总是输出表中的所有列,忽略app/views/[model]/*.json.jbuilder文件 在routes.rb中,我有: resources :workshops do resources :memberships resources :events end # GET /workshop/:workshop_id/events # GET /workshop/:work
app/views/[model]/*.json.jbuilder
文件
在routes.rb中,我有:
resources :workshops do
resources :memberships
resources :events
end
# 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
在events_controller.rb中,我有:
resources :workshops do
resources :memberships
resources :events
end
# 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
我在控制器的“操作前”中设置了@workshop变量
当我访问/workshop/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文件被忽略,以及如何使它工作吗?行
format.json{render json:@events}
将始终呈现@events
数组,因为url/workshop/f00/events
同时接受html
和json
格式,并且当使用json
格式点击url时,您正在呈现@events
如果要在app/views/events/index.json.jbuilder
中呈现数据,请更改:
respond_to do |format|
format.html
format.json { render json: @events }
end
致:
通过不呈现@events
数组,您依赖Rails来输出app/views/events/index.json.jbuilder
中的内容