2016-07-03 10 views
-1

Derzeit meine Routen sind so etwas wie folgt aus:Wie führe ich eine richtige Route in Ember?

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

Ich möchte eine edit Route für die Karten machen. Ich hoffe, dass es eine Route wie cards/1/edit wäre, um es editierbar zu machen. Aber ich bin unsicher, wie ich damit verfahren soll. Wenn ich eine Route wie cards/1/edit mache, wie kann ich das Bearbeitungsformular auf dieser Route anzeigen und auch eine PATCH-Anfrage an das Backend senden.

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

Allerdings, wenn ich einen einfachen Weg wie cards/edit/1 machen, ich bin der Lage, Daten an das Backend zu senden, aber dann wäre es etwas wie folgt aus:

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

Dies wirft ein Fehler, der besagt, dass cards/card ist keine Route.

+0

empfehle ich ein bisschen bei https://guides.emberjs.com/v2.6.0/routing/defining-your-routes/#toc_dynamic-segments Lesen auf. Könnte helfen, etwas von deiner Verwirrung zu klären. –

+0

danke für diesen Link. –

Antwort

0

Dies ist die tatsächliche Strecke, die ich verwenden:

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

Und ich bin in der Bearbeitungs Route (cards/1/edit) gehen, die Karte zu ändern.

Dank @Visualjeff

1

Dies ist, was ich in der Vergangenheit getan haben:

this.route('cards', function() { 
    //An index route for cards is implied. 
    this.route('add', {path: '/add'}); 
    this.route('update', {path: '/update/:id'}); 
}); 

entsprechenden URLs (mit den implizierten Karten/index.hbs Start) wäre:

hoffe, das hilft,

Jeff

+0

wie zeigen Sie dann Ihre individuelle Karte? Ich gehe davon aus, dass die URL '/ cards' alle Karten anzeigt und'/cards/add' zum Hinzufügen einer neuen Karte und '/ cards/update/1' zum Aktualisieren. Was, wenn Sie eine individuelle Karte wie '/ cards/1' zeigen möchten? –

+0

Alles, was Sie oben angegeben haben, ist korrekt. Ein Benutzer kann von der Liste der Karten zu einer bestimmten Karte gehen, indem er auf die Aktualisierungsseite geht (cards/update/1). Wenn sie autorisiert sind oder erlaubt sind, sie zu aktualisieren, bieten sie Zugriff auf das Update, andernfalls zeigen sie die Daten an (ohne die Fähigkeit zu aktualisieren). Nur-Lese-Felder, keine Update-Schaltfläche. – Visualjeff

+0

Sie meinen, dass die Route zum Anzeigen und Bearbeiten identisch mit den autorisierten Benutzern sein sollte, die die Details aktualisieren können. Recht? –