【发布时间】:2014-01-18 22:35:12
【问题描述】:
我的工作:Rails4 + Ember.js(1.0.0)。
问题:
当我 linkTo '#/posts/1' from '#/posts' 时,没关系。
但是,如果我在“#/posts/1”路由中刷新(F5),浏览器将加载“#/posts”路由,而不是我想要的“#/posts/1”。
为什么?有什么原因吗?
在 router.js.coffee 中:
App.Router.map ()->
@resource 'posts', ()->
@route 'new'
@route 'edit', {path: '/:post_id'}
路线:
App.PostsEditRoute = Ember.Route.extend({
model: (params)->
return App.Post.find(params.post_id)
})
控制器:
App.PostsEditController = Ember.ObjectController.extend({
actions: {
update: ()->
// $('button[name=update]').find('.btn-load').addClass('active')
@get('content.transaction').commit()
}
})
谢谢,新年快乐,
更新
@kingpin2k
DAtrs.Store = DS.Store.extend
revision: 13,
adapter: 'DS.RESTAdapter'
,和
gem 'ember-rails'
gem 'ember-source', '1.0.0'
gem 'handlebars_assets', '~> 0.14.1'
gem 'emblem-rails'
@史蒂夫-h
是的!理论上你是对的。
我将“编辑”更改为“发布”
我在PostIndexRoute 中使用console.log 进行了测试。
它之前没有被调用,但你的答案是@resource。
谢谢!
但是刷新问题还是存在的。
而且,它产生了一个新问题。当我linkTo路线/posts/:post_id时,它不显示信息,但之前。(你的答案解释了它)
因为然后,我在浏览器中看到了控制台。它接受了“/posts.json”的请求,而不是“/posts/1.json”。为什么?
你对 ember-data 和 DS.RESTAdapter 的理解是什么。
路线:
App.PostIndexRoute = Ember.Route.extend({
model: (params)->
console.log '...PostIndexRoute......'
return App.Post.find(params.post_id)
})
我确认了“/posts/1.json”并且它起作用了:
{
"post": {
"title": "Hello World",
"id": 1
}
}
对不起,谢谢!
更新-2
因为然后,我在浏览器中看到了控制台。它接受了“/posts.json”的请求,而不是“/posts/1.json”。为什么?
意思是:
当我linkTo 路由/posts/:post_id 时,它不显示信息。
但在控制台中:
...PostIndexRoute......
XHR finished loading: "/posts".
我不知道为什么它没有“/posts/1”?
当我这次刷新浏览器时,它会重定向到'/#/posts'。
【问题讨论】:
-
请您添加其余的路线,这里没有什么会导致这种情况。
-
对不起,我不明白这部分:“它接受了'/posts.json'的请求,而不是'/posts/1.json'。为什么?”当您看到这些请求时,您想访问哪个 URL?