【发布时间】:2013-01-31 17:00:08
【问题描述】:
我的应用中有这样的路由器:
TravelApi.Router.map ->
@resource 'stars', ->
@resource 'star', { path: '/:star_id' }
当我去http://localhost/#/stars
我在 Web 控制台中看到有一个请求
GET http://localhost:3000/stars
当我去http://localhost/#/stars/1
我在 Web 控制台中看到有两个请求
GET http://localhost:3000/stars
GET http://localhost:3000/stars/1
问题:为什么第二种情况有两个请求?
星星路线:
TravelApi.StarRoute = Ember.Route.extend(
model: (params) ->
TravelApi.Star.find(params.star_id)
)
TravelApi.StarsRoute = Ember.Route.extend(
model: ->
TravelApi.Star.find()
)
还有我的模板: application.js.hbs.hamlbars
= hb "linkTo 'stars'" do
stars
%div= hb 'outlet'
stars.js.hbs.hamlbars
%ul
=hb "each star in controller" do
%li<
=hb 'star.name'
star.js.hbs.hamlbars
Star:
= hb 'name'
商店.js.coffee
TravelApi.store = DS.Store.create(
revision: 11
adapter: DS.RESTAdapter.create()
)
【问题讨论】:
-
如果您在
Store中已经有该记录,它真的不应该发出第二个请求。您可以添加您的Store的定义吗?你有它的自定义主键吗?另外,在StarRoute中,尝试将其更改为App.store.find('App.Star', params.star_id)。不确定它是否会有所作为,但请尝试一下 -
现在你可以看到我的商店定义了。此外,我将 json 中的主键从 _id 更改为 id (因为 mongoid)。我还将出口添加到 stars.js.hdb.hamlbars 中。现在我只有在第一次资源加载时有两个请求,但是如果我之前加载星号,那么每次加载特殊星号时我只有一个请求(按 id)***GET localhost:3000/stars ***
标签: javascript ruby-on-rails ruby routes ember.js