2015-10-26 104 views
0

我試圖從我的Rails API中獲取一些數據並將其顯示在模板中。 我很嶄新,因此如果這是一個非常愚蠢的問題,那麼解釋越簡單越好,原諒我。Ember數據沒有填充模型

問題似乎是api數據沒有正確地到達模型,它在我有靜態夾具數據但不適用於服務器數據時有效。對服務器的Get請求正在進行,我得到了很好的響應,所以json如何移動到模型中肯定有問題。

我在routes/external/jobs.js

import Ember from 'ember'; 

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

})路線;

我的工作模型models/job.js

import DS from 'ember-data'; 

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

我期待我的API的形式返回數據

{ 
    "jobs": [ 
     { 
     id: "jfdsa132113", 
     title: "developer", 
     type: "Job", 
     body: "lorem ipsum", 
     published_at: date, 
     tags: [ 
       "some stuff", 
       "more stuff" 
     ] 
     }, 
     { 
     id: "fdsafd3432", 
     title: "designer", 
     type: "Job", 
     body: "lorem ipsum", 
     published_at: date, 
     tags: [ 
       "some stuff", 
       "more stuff" 
     ] 
     } 
    ] 
} 

我的路由器

Router.map(function() { 

//index route 

this.route('external', function() { 
    this.route('jobs'); 
    this.route('support'); 

}); 

export default Router; 
+0

嘿旁註,目前的語法是'{{#each model as | job |}}''。 – locks

+0

感謝您的提醒。我更新了它,不是問題,雖然 – chesapeake4

回答

0

我認爲你有一個誤解關於DS.Model s,你應該看看指南,特別是y http://guides.emberjs.com/v2.1.0/models/finding-records/

假設路徑和模板的設置是否正確,以及ApplicationAdapter是延長RESTAdapter/ActiveModel Adapter - 看到預期的JSON格式here - ,我相信這個問題是models/jobs.js,這是不必要的。

當你做store.findAll('job')時,Ember數據應該對/jobs做出正確的請求。嘗試刪除models/jobs.jsadapters/jobs.js,並執行以下操作:

// routes/external/jobs.js 
import Ember from 'ember'; 

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

如果這沒有幫助試試也可以發佈您的路由器,你會得到任何錯誤。

+0

感謝您的幫助。我相信應用適配器設置正確。你是對的適配器是沒有必要的,但刪除模型給出了「處理路線時出錯:external.jobs預期在'project/models/job'內找到:'model:job',但得到'undefined」錯誤 – chesapeake4

+0

奇怪,你還沒有那個模型嗎? – locks

+0

好吧我擺脫了工作模式,現在只是有一個job.js – chesapeake4

0

假設你的模型從你的API加載得很好,我認爲問題出現在你的模板中。

根據文檔,您需要明確地訪問每個模型的屬性。 http://guides.emberjs.com/v2.1.0/templates/displaying-a-list-of-items/

因此,而不是{{title}}使用{{job.title}}

{{#each model as |job|}} 
    <a href={{job.title}}> 
     <div class="info"> 
      <div class="title">{{job.body}}</div> 
     </div> 
    </a> 
{{/each}} 
+0

感謝您的幫助。但這並沒有解決它。我認爲這是模型數據到達模板的問題,可能是命名錯誤或其他問題出在了錯誤的地方? – chesapeake4

+0

對不起,我不能提供更多的幫助。我會使用Ember Inspector來確保你的數據被加載到應用程序中,並且還會在模板的循環中引入一個'{{debugger}}'語句並檢查'model'和'job'變量。也許爲這篇文章搭建一個jsbin,因爲很難確切知道發生了什麼。 http://guides.emberjs.com/v2.1.0/ember-inspector/installation/ http://guides.emberjs.com/v2.1.0/templates/development-helpers/ –

+0

沒關係,任何幫助總比沒有好。根據ember inspector,我的路由模型是,並且當我檢查數據選項卡並查看相同模型的作業模型,但內容是[]且長度爲0時。我不確定那是什麼意思。我可以看到get請求在網絡選項卡中返回適當的json,所以也許它不會被設置到商店? – chesapeake4