Ich habe versucht, eine einfache Verkleidung mit Schienen zu machen, die einige Benutzer Informationen aus unserem System zeigt.Warum bekomme ich Benutzer und nicht Benutzer auf Benutzer/Index-Route?
Meine Route:/api/Anwender gibt diese json:
{"users":[{"id":1,"username":"Evolutio","email":"[email protected]"}]}
Mein emberadapter:
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
host: 'https://api.domain.tld',
namespace: 'api',
headers: {
//"API_KEY": "secret key",
}
});
meine Benutzer/model.js
import DS from 'ember-data';
export default DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string')
});
meine Benutzer/index/route.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
let users = this.store.findAll("users");
return users;
}
});
Ich besuche diese URL: localhost: 4200/users
Wenn ich die Benutzer/model.js lösche ich diesen Fehler:
WARNING: Encountered "users" in payload, but no model was found for model name "user" (resolved model name using [email protected]:application:.modelNameFromPayloadKey("users"))
und die Daten mit dem Ember Inspektor:
Vorlage von den Benutzernmein Index:
<ul>
{{#each model as |user|}}
<li>
{{#link-to 'users.show' user}}
{{user.username}} {{user.roles}}
{{/link-to}}
</li>
{{/each}}
</ul>
mein SCND Problem ist, dass Ich kann keine Beziehung herstellen. meine api kehrt jetzt das:
{"users":[{"id":1,"username":"Evolutio","email":"[email protected]","roles":[{"id":5,"name":"admin","alias":"Administrator"}]}]}
mein Benutzer/model.js:
import DS from 'ember-data';
export default DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string'),
roles: DS.hasMany('role'),
});
und jetzt habe ich diesen Fehler:
Error while processing route: users.index Assertion Failed: Passing classes to store methods has been removed. Please pass a dasherized string instead of undefined
ich es mit diesem gelöst: meine user_serializer.rb:
class UserSerializer < ActiveModel::Serializer
attributes :id, :username, :email, :display_role
#has_many :roles
def display_role
"#{object.roles[0].alias}"
end
end
und meine Benutzer/model.js:
import DS from 'ember-data';
export default DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string'),
display_role: DS.attr('string')
});
Dank, funktioniert super! – Evolutio
können Sie in mein zweites Problem schauen. Ich habe Ihre App verwendet, die Sie in Ihrer Homepage als Basis verlinkt haben. Aber ich kann keinen Fehler bekommen. – Evolutio
Sie haben also bereits eine 'app/model/role.js' mit' name' und 'alias' Feld, plus ein' user: belongsTo ('user') '? – Zoltan