Ruby on rails 忽略Rails 4*.json.jbuilder文件

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

在我的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/: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
中的内容