我对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问题
答案 0 :(得分:5)
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。