我正在使用JSONAPIAdapter创建我的第一个Ember / Phoenix应用程序。在做帖子请求时,Ember以$('tr:active')
以下是相关代码:
适配器/ application.js中
<table id="ChainResultsTable" class="table table-condensed table-hover table-striped">
<thead>
<tr>
<th>
<div>
<div>
Last Updated
</div>
<div>
Last Updated
</div>
</div>
</th>
<th>
<div>
<div>
Properties
</div>
<div>
Properties
</div>
</div>
</th>
<th>
<div>
<div>
Number of Properties
</div>
<div>
Number of Properties
</div>
</div>
</th>
<th>
<div>
<div>
Chain Status
</div>
<div>
Chain Status
</div>
</div>
</th>
@if (Model.ShowChaseDetails)
{
<th>
<div>
<div>
Activity
</div>
<div>
Activity
</div>
</div>
</th>
}
<th class="scrollbarhead"></th>
</tr>
</thead>
<tbody>
@foreach (var row in Model.ChainSearchRowList.Data)
{
<tr data-chainid="@row.ChainId" data-url="/EstateAgents/ChainDetails/Index/@row.ChainId" tabindex="0">
<td style="width: 150px">
@row.LastUpdated.TimeAgo()
</td>
<td>
@Html.Raw(row.Postcodes.Replace(" ", " ").Replace(",", " "))
</td>
<td style="width: 150px">
@row.NodeCount
</td>
<td style="width: 120px">
@switch (row.ChainStatusId)
{
case ChainStatusValues.Active:
{
<span>@ChainStatusDescriptions.Active</span>
}
break;
case ChainStatusValues.Archived:
{
<span>@ChainStatusDescriptions.Archived</span>
}
break;
case ChainStatusValues.Complete:
{
<span>@ChainStatusDescriptions.Complete</span>
}
break;
}
</td>
@if (Model.ShowChaseDetails)
{
<td>
@if (row.IsChasable)
{
switch (row.ChainChaseStatusId)
{
case ChainChaseStatusValues.ChaseInProgress:
<span>Calling</span>
break;
case ChainChaseStatusValues.ChaseWaiting:
<span>Waiting for Buyers</span>
break;
case ChainChaseStatusValues.ChaseComplete:
<span>Complete</span>
break;
case null:
<span></span>
break;
default:
<span>Unknown</span>
break;
}
}
else
{
<span></span>
}
</td>
}
</tr>
}
@if (!Model.ChainSearchRowList.Data.Any())
{
<tr class="no-results-no-hover">
<td colspan="100%">
No Results
</td>
</tr>
}
</tbody>
</table>
串行器/ application.js中
Assertion Failed: AdapterError expects json-api formatted errors array.
请求有效负载:
import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
import config from '../config/environment';
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
});
响应有效载荷:
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
});
为什么Ember会一直给我这个错误?
答案 0 :(得分:0)
您的回复有效负载不正确。您正在使用 json-api 。因此,您的有效负载必须遵循json-api specification。您的请求 - 有效负载看起来正确但请查看错误必须serialized。 json-api错误响应必须包含一个包含错误对象数组的根键“errors”。关于documenation,错误可能包含多个成员,但最重要的两个是详细信息和来源。
以下是一个例子:
{
"errors":[
{
"detail": "can't be blank",
"source": {
"pointer": "data/attributes/name"
}
}
]
}
源 -key包含一个持有json-api指针的json对象。借助此指针信息,ember的JSONAPI-Adapter将错误添加到记录的相应属性中。请注意,您的后端需要发送 422 HTTP状态代码(不可处理的实体)。
如果可行,您可以在客户端执行类似的操作:
{{#each model.errors.name as |error|}}
<div class="error">
{{error.message}}
</div>
{{/each}}
如何在后端序列化错误?你在使用ja_serializer吗?如果没有,我会推荐它,因为ja_serializer可以默认序列化json-api-errors。
答案 1 :(得分:0)