Ich erstelle eine Ember App mit einer Symfony REST API. Ich verwende auch den REST-Adapter für meine Anfragen.Ember.js: Anfrage bearbeiten URL
Ich habe 2 Modelle in meiner App: Benutzer und ihre verwandten Kommentare. Ich habe bereits CRUD-Operationen für meine Benutzereigenschaften erstellt und jetzt konzentriere ich mich auf die CRUD-Operationen für Kommentare.
Model user.js
export default DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
comments: DS.hasMany('comment')
});
Model comment.js
export default DS.Model.extend({
title: DS.attr('string'),
message: DS.attr('string'),
user: DS.belongsTo('user')
});
Ich habe eine Route, die alle Kommentare zeigt (und andere Daten) eines bestimmten Benutzers. Die Anforderung lädt das Benutzerobjekt und seine Beziehungen. In der Ansicht habe ich auch ein Formular und eine Aktion, um einen neuen Kommentar für diesen Benutzer zu erstellen.
Route users/get.js
import Ember from 'ember';
export default Ember.Route.extend({
id: null,
model(params) {
this.set('id', params.user_id);
return this.get('store').findRecord('user', params.user_id, {include: 'comments'});
},
});
Route users/get/comments.js
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.modelFor('user.get', params.user_id);
},
});
Controller users/get/comments.js
import Ember from 'ember';
export default Ember.Controller.extend({
newComment: null,
user: null,
init: function() {
this._super(...arguments);
let comment = this.store.createRecord('comment');
this.set('newComment', comment);
},
actions: {
saveComment: function() {
let user = this.get('model');
let comment = this.get('newComment');
comment.set('user', user);
comment.save();
}
}
});
Alles funktioniert, außer der Anfrage an das Backend. Ich lud die Kommentare von dem Benutzer, so erwarte ich einen Aufruf an:
POSThttp://my-app.local/comments/
:
POSThttp://my-app.local/users/comments/
Stattdessen wird der Anruf gesendet wird, Weißt du warum und wie könnte ich das korrigieren?
Das zweite Problem, das Modell wird von der Route 'user.get' geladen. Das funktioniert, weil der Benutzer von dieser Route zu dieser Seite kommt, aber ... Es funktioniert nicht, wenn der Benutzer die URL für Kommentare direkt eingibt. Das klingt logisch, aber ich habe keine Ahnung, wie ich dieses Problem beheben kann ... Können Sie mir helfen?
Route Benutzer/get/comments.js warum haben Sie diese Route hier eingefügt.Es sagt nichts. Es wäre besser, das Elternelement anzuzeigen, das die Daten aufruft. – Epirocks
Entschuldigung, ich habe den Post aktualisiert, um die Route hinzuzufügen. – Rubix