DS.Model网址不在ember.js中工作

时间:2012-11-30 16:09:13

标签: ember.js ember-data

我对Ember非常,非常非常新: - )

我有一个DS.Model,我想用.json强制扩展,用于从Rails服务器检索数据。

服务器的网址正常工作,我可以在浏览器的调试器中看到网址不是DS.model网址中指定的网址

var App = Ember.Application.create();

App.store = DS.Store.create({
 adapter:  DS.RESTAdapter.create({url: 'http://127.0.0.1:3000'}),
revision: 8
});


App.Expedient = DS.Model.extend({
  url: 'expedients/%@.json',
  procedencia: DS.attr('string'),
  interessat_nom: DS.attr('string'),
  data_signatura_provisional: DS.attr('date')
});

手动获取权宜之计:

var model2 = App.store.find(App.Expedient, 125000);

输出控制台:

OPTIONS http://127.0.0.1:3000/expedients/125000 404 (Not Found) 

我想成为这样的网址:

http://127.0.0.1:3000/expedients/125000.json 

此外,我尝试使用另一个不同的名称更改DS.Model网址:

App.Expedient.reopenClass({
 url: 'mockurl/%@.json'
});

但是浏览器的控制台和以前一样有'url',我不知道为什么Ember-Data没有得到模型的URL。

谢谢!

的问候,

PS。从两个来源测试Ajax时,我知道Access-Control-Allow-Origin CORS问题

3 个答案:

答案 0 :(得分:5)

由于某些原因,github现在无法正常工作,所以我无法查看ember的来源,但我认为你可以这样做:

var adapter = DS.RestAdapter.extend({
  buildURL: function(record, suffix) {
    var s = this._super(record, suffix);
    return s + ".json";
  })
});

你需要将你的商店插入而不是默认的休息适配器。

答案 1 :(得分:2)

我刚刚尝试使用我的RESTAdapter子类,它正在运行:

 App.WORESTAdapter = DS.RESTAdapter.extend({
    ...
    buildURL: function(record, suffix){
       return this._super(record, suffix) + ".json";
    }
})

答案 2 :(得分:0)

由于您正在使用rails后端,因此更容易使您的API适应Ember.data所期望的相同约定吗?所以在你的expedientsController#show行动:

def show
  @expedient = Expedient.find(params[:id])
  render json: @expedient
end

只要您的控制器返回JSON结构,Ember希望它应映射到您的DS.Model,请参阅:this ember guide