{{action}} ссылка с transitionTo, используя ID отношения

Учитывая вид с контекстом, как{ id: 1, form_id: 5}Я хочу создать{{action}} ссылка на форму с помощью.form_id

Мой код вида выглядит так:


  {{action showForm form_id href=true}}

И действие в моем роутере выглядит так:

showForm: function(router, event) {
  var form_id = event.context;
  router.transitionTo('root.form', { id: form_id });
},

Я получаю сообщение об ошибке: «

Uncaught Error: assertion failed: You must specify a target state for event 'showForm' in order to link to it in the current state 'root.index'.

Я предполагаю, что проблема в том, как ям настройка контекста дляtransitionToно у меня нетЯ не мог найти правильное решение.

Вот полный код для воспроизведения проблемы:


  {{outlet}}



  {{action showForm form_id href=true}}


MyApp = Ember.Application.create({
  autoinit: false
});

MyApp.router = Ember.Router.create({
  root: Ember.Route.extend({
    index: Ember.Route.extend({
      route: '/',

      // Throws error: 
      //    You must specify a target state for event 'showForm' in 
      //    order to link to it in the current state 'root.index'
      //
      showForm: function(router, event) {
        var form_id = event.context;
        router.transitionTo('root.form', { id: form_id });
      },

      // Won't work because form deserialize finds id, not form_id 
      //showForm: Em.Route.transitionTo('root.form'),

      // This won't work either
      // showForm: Em.Route.transitionTo('root.form', { id: this.form_id }),        

      connectOutlets: function( router, context ){
        var group = Em.Object.create({ id:1, form_id: 5 });
        router.get( 'applicationController' ).connectOutlet( 'group', group );
      }
    }),
    form: Ember.Route.extend({
      route: '/form/:id',
      serialize: function( router, context ){
        return { id: context.id }
      },
      deserialize: function( router, context ){
        var form = Em.Object.create({ id: 5, name: 'my form' });
        return MyApp.Form.find( context.id );
      },
      connectOutlets: function( router, context ){
        // left out for fiddle example 
      }
    })
  })
});

MyApp.ApplicationController = Ember.Controller.extend({});

MyApp.GroupController = Em.ObjectController.extend({});
MyApp.GroupView = Em.View.extend({ templateName:  'group' });

MyApp.initialize(MyApp.router);​

И соответствующая скрипка:

http://jsfiddle.net/jefflab/LJGCz/

Ответы на вопрос(1)

Ваш ответ на вопрос