2016-04-02 7 views
0

シンプルなemberappをレールで作ろうとしたところ、システムからのユーザー情報がいくつか表示されていました。なぜユーザを取得し、ユーザ/インデックスルート上のユーザではないのですか?

マイルート:/ API /ユーザー戻り、このJSON:

{"users":[{"id":1,"username":"Evolutio","email":"[email protected]"}]} 

マイemberadapter:

import DS from 'ember-data'; 
export default DS.RESTAdapter.extend({ 
    host: 'https://api.domain.tld', 
    namespace: 'api', 
    headers: { 
     //"API_KEY": "secret key", 
    } 
}); 

私のユーザー/ model.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    username: DS.attr('string'), 
    email: DS.attr('string') 
}); 

私のユーザー/インデックス/経路.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     let users = this.store.findAll("users"); 
     return users; 
    } 
}); 

私はこのURLを参照してください:localhostを:私は、ユーザーを削除すると4200 /ユーザーは

/model.js私はこのエラーを取得する:

WARNING: Encountered "users" in payload, but no model was found for model name "user" (resolved model name using [email protected]:application:.modelNameFromPayloadKey("users")) 

と燃えさしインスペクタとデータ: enter image description here

ユーザーから

私のインデックステンプレート:

<ul> 
{{#each model as |user|}} 
    <li> 
     {{#link-to 'users.show' user}} 
      {{user.username}} {{user.roles}} 
     {{/link-to}} 
    </li> 
{{/each}} 
</ul> 

私scndの問題があること、です私はどんな関係も作ることができない。 私のAPIのリターンは今、この:

{"users":[{"id":1,"username":"Evolutio","email":"[email protected]","roles":[{"id":5,"name":"admin","alias":"Administrator"}]}]} 

私のユーザー/ model.js:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    username: DS.attr('string'), 
    email: DS.attr('string'), 

    roles: DS.hasMany('role'), 
}); 

、今、私はこのエラーを得た:

Error while processing route: users.index Assertion Failed: Passing classes to store methods has been removed. Please pass a dasherized string instead of undefined 

私はこれでそれを解決: 私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 

と私のユーザー/ 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') 
}); 

答えて

1

あなたは本当によくやった、あなたは変更する必要がどのような一つのことは、モデルのファイル名です。ポッド構文を使用する場合は、users/model.jsuser/model.jsに移動するか、app/model/user.jsに保存します。

モデルは常に単数形です。ファイル名は単数形です。

更新app/index/route.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model() { 
     return this.store.findAll("user"); 
    } 
}); 

あなただけEmber.jsを学び始めた場合、私はあなたが規則についての詳細を学ぶことができるのブログ記事を持っている:Ember.js tutorial

+0

おかげで、素晴らしい作品! – Evolutio

+0

maye私の2番目の問題を調べることができます。 ホームページにリンクしているアプリをベースとして使用しました。しかし、私は間違いがない。 – Evolutio

+0

だから 'name'と' alias'フィールドと 'user:belongsTo( 'user')'で 'app/model/role.js'をすでに持っていますか? – Zoltan

関連する問題