所需的输出:仅从活动,如数据:
[{"id":600,"title":600,"start":"2018-10-17T15:24:06.000Z","end":"2018-10-17T17:11:06.000Z","color":"green"}
[{"id":601,"title":601,"start":"2019-10-17T15:24:06.000Z","end":"2018-10-17T17:11:06.000Z","color":"green"}
出于某种原因电流输出也给信息从application.html.erb
和application.js
和其他文件:
事件/ _event.json.jbuilder:
json.id event.id
json.title event.id
json.start event.starts_at
json.end event.ends_at
json.color event.status_color unless event.status_color.blank?
json.url event_url(event, format: :json)
index.json.jbuilder:
json.array! @events, partial: 'events/event', as: :event
控制器:
class EventsController < ApplicationController
def index
@events = Event.all
#@q = Event.ransack(params[:q])
#@events = @q.result.includes(:location, :client, :jobs).paginate(:page => params[:page], :per_page => 15).order("created_at DESC")
end end
安慰:
Started GET "/events.json" for 143.27.126.62 at 2019-01-31 10:49:24 +0000
Cannot render console from 143.27.126.62! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by EventsController#index as JSON
User Load (0.8ms) SELECT "users".* FROM "users" WHERE (users.tenant_id IS NULL) AND "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /usr/local/rvm/gems/ruby-2.5.3/bundler/gems/milia-4c36b46f3f42/lib/milia/control.rb:102
Tenant Load (0.7ms) SELECT "tenants".* FROM "tenants" INNER JOIN "tenants_users" ON "tenants"."id" = "tenants_users"."tenant_id" WHERE (tenants.tenant_id IS NULL) AND "tenants_users"."user_id" = $1 [["user_id", 1]]
↳ /usr/local/rvm/gems/ruby-2.5.3/bundler/gems/milia-4c36b46f3f42/lib/milia/control.rb:69
MILIA >>>>> [change tenant] new: 1 old: 1
MILIA >>>>> [auth_tenant callback]
Tenant Load (0.6ms) SELECT "tenants".* FROM "tenants" WHERE (tenants.tenant_id IS NULL) AND "tenants"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /usr/local/rvm/gems/ruby-2.5.3/bundler/gems/milia-4c36b46f3f42/lib/milia/base.rb:126
CACHE Tenant Load (0.0ms) SELECT "tenants".* FROM "tenants" WHERE (tenants.tenant_id IS NULL) AND "tenants"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /usr/local/rvm/gems/ruby-2.5.3/bundler/gems/milia-4c36b46f3f42/lib/milia/base.rb:126
CACHE Tenant Load (0.0ms) SELECT "tenants".* FROM "tenants" WHERE (tenants.tenant_id IS NULL) AND "tenants"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ /usr/local/rvm/gems/ruby-2.5.3/bundler/gems/milia-4c36b46f3f42/lib/milia/base.rb:126
Rendering events/index.json.jbuilder within layouts/application
Event Load (80.7ms) SELECT "events".* FROM "events" WHERE (events.tenant_id = 1)
↳ app/views/events/index.json.jbuilder:1
Rendered events/_event.json.jbuilder (1.1ms)
Rendered events/_event.json.jbuilder (0.3ms)
Rendered events/_event.json.jbuilder (0.2ms)
Rendered events/_event.json.jbuilder (0.2ms)
Rendered events/_event.json.jbuilder (0.3ms)
也许这与Rendering events/index.json.jbuilder within layouts/application
办?
因为我需要编写一些代码,我现在张贴这作为一个答案:
你确定它做/events.json
?或者是做/events
呢? (看你的截图,我觉得你刚才输入在Chrome地址栏/events.json
那里,因为它应该包括“主机名”有默认情况下(从据我所知)。
如何rails
确定什么响应格式渲染是通过this doc:
GET /posts/5.xml | request.format => Mime::XML GET /posts/5.xhtml | request.format => Mime::HTML GET /posts/5 | request.format => Mime::HTML or MIME::JS, or request.accepts.first`
因此,
GET /events.xml
将“默认”渲染app/views/events.xml.TEMPLATE_ENGINE
GET /events.json
将“默认”渲染app/views/events.json.TEMPLATE_ENGINE
GET /events
将由“默认”从所述第一值中推断“接受”报头。即,如果我在这个网址在Chrome地址栏中键入,看着Chrome的网络选项卡,铬似乎产生了“接受”头如下:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
......其中的第一个值是text/html
,而就是为什么“默认” Rails会呈现app/views/posts.html.TEMPLATE_ENGINE
。
^这是目前我的猜测,为什么你看到的HTML代替,因为很可能你正在做的请求GET /events
而不是正确的一个是GET /events.json
。你仍然可以做但是GET /events
,但你需要修改“接受”头等于"application/json"
为了检验上述我的理论,就可以打开Chrome的“网络选项卡”(点击HERE如果你不知道如何打开它)。然后做/发送请求,从正常到你的Rails端点(说不上来也许你点击一个按钮,发送请求?)。此后,“网络”选项卡将被填充。你会看到如下:
正如你可以看到,该网址是posts.json
这是它应该是什么。如果您是不是看到events
而不是events.json
,那么这就是你的问题。你需要确保它做的,而不是events.json
,或者你仍然可以做events
,但在更新请求中的“接受”头(你将在截图中看到,该值应该有"Accept: application/json"
附:所有我上面说的是,你是不是在控制器动作渲染“手动”的假设下,和你没有手动调用render
(这应该怎么办Rails的默认值,Rails会隐式渲染的,也是我一直所描述上面我的回答)
尝试在操作方法的最后一行添加respont_to :json
。
class EventsController < ApplicationController
def index
@events = Event.all
resond_to :json # add this line
end
end