我在app中使用slugs而不是id。 Slug具有以下结构:bla-model-name-bla-bla-id
其中bla-model-name-bla-bla
是模型名称,-id
是模型ID。
应用程序不关心“名称”部分它在这里用于SEO和UX ...应用程序只采用“ID”部分并使用它从API检索模型。
有时slug会发生变化,我希望app重定向(在检索模型后)到具有正确“name”部分的URL。
我试着这样做:
App.PostRoute = Em.Route.extend
...
...
afterModel:(post,transition)->
...
# checkinkg slugs
if current_slug != valid_slug
@transitionTo 'post', post
但在这种情况下,我们在PostRoute之后失去了所有的东西。如果需要的网址是/post-old-invalid-name-33/comments
,那么在“slug fix”之后我有/post-valid-name-33
。所以我们丢失了/comments
部分
当然这是一个简化的例子。真正的应用程序不仅有/comments
资源,还有更多。
如何更改网址的一部分或如何重定向而不会丢失其余的转换?