【问题标题】:Ember.js - Routing from a prefixed urlEmber.js - 从前缀 url 路由
【发布时间】:2014-05-04 20:34:21
【问题描述】:

我需要从预定义的 URL 开始创建资源。例如,我有一个想要使用 Ember.js 创建的迷你博客组件。该博客位于来自 Rails 路由的“http://example.com/user/:slug”的 URL 上。 :slug 是用户名的friendly_id。

如何在 Ember 中将其配置为路由,以便开始开发博客组件?我希望将 url 更改为 'http://example.com/user/:slug/blog',其中 ember 会将 'blog' 添加到 url 的末尾。我还想嵌套 url,以便在单击时添加博客标题的 :slug:'http://example.com/user/:slug/blog/ember-js-routing' 但是,我假设这已经完成通过嵌套路由如下。

@resource 'blog', ->
    @route 'show',
        path: '/:slug'

我就是不知道如何启动资源

编辑 1

为了将“博客”添加到 URL,我在路由中执行了以下操作。这很好用,希望这是这样做的权利吗?但是,如果我刷新页面 Rails 将出现错误,因为它无法识别 URL。这是正确的,因为我没有在我的 Rails 应用程序中为它创建路由。如果我创建路由,那么 rails 期望看到一个控制器和视图,但我不希望这样,因为我希望 Ember.js 从 URL 的 blog 部分获取控制权。

App.UserIndexRoute = Ember.Route.extend(
    beforeModel: ->
      @replaceWith "blog.index"
      return
)

我开始认为 Ember.js 不是我想要的,因为我正在尝试构建组件而不是单页应用程序。

【问题讨论】:

    标签: ruby-on-rails ember.js


    【解决方案1】:

    类似这样的:

    Ember.Router.map(function() {
        this.resource('users', {path: '/user'}, function() {
            this.resource('user', {path: '/:slug'}, function() {
                this.resource('blog', {path: '/blog'}, function() {
                    this.route('post'), {path: '/:post_id'});
                    });
                });
            });
        });
    });
    

    另外,也许我今年早些时候在 Warm Croc Conf 上提供的这个截屏视频可能会更清楚地说明这个问题:https://www.youtube.com/watch?v=KH5RreHtaaQ

    编辑1: 要让 Ember.js 创建一个在 HTML 元素“内部”工作的应用程序,您可以使用:

    App = Ember.Application.create({
      rootElement: '#app-container'
    });
    

    你可能会发现这正是你所需要的:)

    【讨论】:

    • 谢谢..我认为可能有更好的方法来做到这一点。我现在遇到的问题是它没有将blog 添加到 URL 的末尾,任何想法为什么会发生这种情况?我一定会看你的视频。
    • Ember.js 是一个构建单页应用程序的框架,所以如果你想要一个小部件或组件库,可能会有更好的选择......话虽如此,你可以告诉 Ember在 HTML 元素中创建一个“SPA”,使用:App = Ember.Application.create({ rootElement: '#app-container' });
    • 经过多天的尝试,我决定坚持使用 Rails 和 RJS。遗憾的是,这些框架不提供某种组件集成而不仅仅是 SPA。无论如何我都会接受你的回答,因为你回答了我原来的问题。
    猜你喜欢
    • 2013-02-07
    • 2015-12-10
    • 2011-06-09
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2015-08-12
    • 2019-10-21
    相关资源
    最近更新 更多