【发布时间】:2014-08-22 01:08:18
【问题描述】:
我们正在开发教育平台。我们有两种资源类型:课程和课程。所以我们确实有以下 URL 架构:
/(根) └┬课程-蛞蝓 ├─资讯 └┬上课-蛞蝓 └┬cmet └─comment-id课程的 URL 如下所示:/programming/what-is-loop/,而本课程的 cmets 将具有以下 URL:/programming/what-is-loop/comments/。
现在我们决定该课程是可选的。有些课程不在任何课程中,有些课程在许多课程中。所以新的 URL 架构如下所示:
/(根) ├┬课程-蛞蝓 │├─资讯 │└┬教训-蛞蝓 │ └┬cmets │ └─comment-id │ └┬上课-蛞蝓 └┬cmet └─comment-id换句话说,URL 的 course 部分是可选的。如何使CourseRoute可选,或者如何重用LessonRoute、CommentsRoute和CommentRoute(其实还有一点)
【问题讨论】:
-
我会做什么 - 给定这个 URL 方案,是通过重复路由的 renderTemplate 钩子重用视图和控制器
-
@MeoriOransky 是的.. 但是如何处理 url?例如,在模板中,我经常使用
{{link-to}},但我不能保留旧的路由名称。我需要根据当前路线使用不同的路线名称 -
您可以使用条件(不是一种非常干净的方式),也可以扩展链接到和 LinkView 以创建一个可以智能的 {{#link-to-lesson}} 助手它。
-
以及 {{#link-to-cmets}} {{#link-to-comment}} 和所有其他人......但无论如何,谢谢。也许我会想出一般的{{#smart-link-to}}。另外我正在考虑将
course-slug移动到查询参数。 -
这个 URL 架构是一场等待发生的噩梦。为什么不将
lessson-slug始终设为“第一”路线?保持这种一致性对我来说更有意义。您的路线可以是/course-slug、/course-slug/info、/lesson-slug、/lesson-slug/comments和/lesson-slug/comments/:comment_id。假设lesson-slug在整个应用程序中始终是唯一的。那么所有的#link-to lesson-slug lesson都会保持一致,不需要疯狂的 url 逻辑。
标签: ember.js ember-router