2016-07-04 9 views
0

で作成後に新しい項目のルートに移動します:私は私のルートでこのような何かをしましたEmberjs

actions: { 
    save(title, description) { 
    const newCard = this.get('store').createRecord('card', { title, description }); 
    newCard.save().then((card) => { 
     // card.id contains the id of the new card 
     this.transitionTo('cards.all'); // problem with this line 
    }); 
    } 
} 

私はそれを作成した後に新しいカードのルートに行きたいです。新しい商品のidcard.idから入手できます。私は、次のことを試してみましたが、役に立たないのき:cards.cardルートはのparamsでidを見つけることができないので、

this.transitionTo('cards.card', card.id); 

これは、いくつかのエラーがスローされます。

this.transitionTo('cards/' + card.id); 

cards/45ルートが見つからなかったが、新しいアイテムが作成された場合、私はそれにナビゲートできることを示すいくつかのエラーをスローします。

Ember 2.6.1を使用しています。

EDIT

マイrouter.jsファイル:

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 
+0

:私のcard.jsはのparams期待目的であったと私は番号を渡すためにしようとしていたので、

this.transitionTo('cards.card', card); 

私はこれを行うために必要な。 jsファイルを使用してルーティングに関する質問をすると、どのルートが利用可能か、入れ子になっているのか、そのようなことがわかります! – locks

+0

が理にかなっています。それを指摘してくれてありがとう。 –

答えて

0

それはこのようになります。あなたはあなたのルーターを投稿する必要があり

model(params) { 
    return this.store.find('card', params.id); 
} 
1

これはあなたのルータが現在のように見えるものですか?

this.route('cards', function() { 
    this.route('all'); 
    this.route('card', {path: '/:card_id'}, function() { 
    this.route('edit'); 
    }); 
    this.route('new'); 
}); 

あなたが特定のカードのための新しいルートに行くことを望むなら、あなたは新しいのためのスラグを定義する必要があります。

this.route('new', {path: /:card_id}); 

あなたの行動のハッシュの遷移のようなものは次のように希望:

this.transitionTo('new', card.id); 

がうまくいけば、私が正しくあなたのユースケースを理解しています。

+0

これはうまくいくとは思わない。問題は、新しく作成されたアイテムにまだIDがないことです。 –

+0

emberインスペクタを起動し、transitionToの直前にブレークポイント(デバッガ)を設定します。次に、IDを持っているかどうかを確認するために残した新しいカードの状態を確認します。 – Visualjeff

+0

新しいアイテムを作成した後に 'this.route( 'cards.card'、card.id)に行きたいですが、そうするとroute:cards.cardを処理中にエラーが発生します。インデックスアサーション失敗:ストアドのfindメソッドに未定義のidを渡すことはできませんエラー:アサーションエラー:未定義のidをストアのfindメソッド '' 'に渡すことはできませんが、' console.log(card.id) 'を実行すると、それは私に正しい 'id'を与えます。また、私は 'this.transitionTo( 'cards.card'、1)'を実行しようとしましたが、それは私に同じエラーを投げた。 'cards/card/1'が存在します。 –

関連する問題