我可以嵌套在别处使用的资源吗?

时间:2014-01-30 17:54:39

标签: ember.js

我们的应用程序允许下达订单,这种不足为奇的路线:

App.Router.map ->
  @resource "orders", ->
    @route "new"

订单对象与用户关联,不足为奇。 (实际上,我们称之为订阅者,但我正在尝试最小化此处的内部术语。)在上述路线中,创建了一个新用户或从列表中选择了现有用户:

App.OrdersNewRoute   = Em.Route.extend,
  model: ->
    @get("store").createRecord('order', user: @get('store').createRecord('user') )

我们希望能够在用户已设置的情况下创建订单,即如果我们在/users/1的路线上查看用户,我们可以转到/users/1/orders/new并创建一个新订单以user_id: 1订购。所以我们尝试了这个:

App.Router.map ->
  @resource "users", ->
    @route "new"
    @resource "user", path: "/:user_id", ->
      @route "show"
      [...]
      @resource "orders", ->
        @route "new"

和这个控制器:

App.UserOrdersNewRoute = Em.Route.extend,
  model: ->
    @get("store").createRecord('order', user: @modelFor('user') )

这不是一种有趣的方式。

  • 如果我们link_to 'orders.new',我们会被发送到路径/users/undefined/orders/new
  • 如果我们转到/users/1/orders/new路径,则会使用OrdersNewController而不是UserOrdersNewController。还在商店中创建了一个新用户,因此它没有使用UserOrdersNewRoute

我做了a fiddle illustrating this

我这样做错了,还是这不是解决问题的实际方法? 我可以在不同的路线上以不同的方式创建相同类型的资源吗?

0 个答案:

没有答案
相关问题