我正在调整一个旧的JS(没有框架)+ Rails应用程序作为Ember学习练习。应用程序的想法是我从一些数据输入生成pdf。在初始版本中,没有用户持久性 - 您可以修改表中提供给您的数据,然后下载它的PDF。
作为其中的一部分,我决定运行一个明确的非标准的ember框架 - 我实际上是使用Ember Data来加载表的初始值。 Ember非常适合我在Rails方面的模型,它使得更复杂的计算变得更加容易。我遇到的问题是,我最初的想法是,当我下载PDF时,我会使用二进制数据(带有application / pdf标题)回应Ember Data上的“保存”操作,然后我可以使用某些东西像FileSaver.js一样为客户服务。然后,我发现EmberData需要JSON返回值。
所以我base64编码了我的PDF响应并将其解开..但它不适合模型架构。我以为我会做一个手动AJAX保存 -
CalculateYourTV.RostersShowController = Ember.ObjectController.extend({
actions:{
download: function(){
var roster = this.get("model");
var team = roster.get('team');
return this.ajax('*URL GOES HERE*', record.toJSON(), "PUT").then(function(data) {
console.log('called')
console.log(data)
});
},
}
})
这就是我目前陷入困境的地方。有没有办法访问EmberData发布到的URL?我可以在Rails方面硬编码路由,但我不喜欢这里的硬编码路由,我想尽可能保持它的可重用性(我计划最终允许数据持久)。 / p>
答案 0 :(得分:0)
只需打开chrome dev工具(或firebug)并监控网络选项卡中的内容。您应该看到应用程序发出的任何ajax请求,包括EmberData的保存请求。
答案 1 :(得分:0)
您可以通过为每个模型创建自定义Ember数据适配器来更改特定模型将达到的URL。
例如,假设您的person
模型不需要点击默认的/persons
网址。
App.PersonAdapter = App.ApplicationAdapter.extend({
pathForType: 'special/custom/endpoint/for/folks'
});
也就是说,Ember Data可能不是您的PDF" model"的最佳工具。对于大多数模型,您始终可以使用Ember数据,但对于其他不符合您的真实模型定义的内容,请使用快速$.ajax
。
答案 2 :(得分:0)
您可以要求适配器为您构建网址 -
type
其中id
是模型的名称,@container.lookup('adapter:application')
是其ID。
如果想直接在容器中查找适配器,那么</ p>
<div class="container">
<div class="row">
<div class="people-cards">
<div class="col-md-6">
<div class="well">
<div class="profile-image">
<img src="https://higherlogicdownload.s3.amazonaws.com/MBGH/4f7f512a-e946-4060-9575-b27c65545cb8/UploadedImages/Board%20Photos/SIZE%20150x190/PAMELA%20HANNON%202015.jpg">
<div class="card-info">
<h3 div class="company">Company Name</h3>
<h4 div class="name">Person Name</h4>
<h5 div class="title">Job Title</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>