余烬数据不会向后置请求添加参数
Ember Data does not add parameters to a post request
我正在尝试使用ember.js作为前端在我的rails后端创建一个资源。
在router.js
我有这个:
//...
this.route('posts', function() {
this.route('new');
});
//...
这是app/templates/posts/new.hbs
<div>
<label>Title</label>
{{input type="text" value=model.title}}
</div>
<div>
<label>Body</label>
{{input type="text" value=model.body}}
</div>
<div>
<button {{action "save"}}>Save</button>
<button {{action "cancel"}}>Cancel</button>
</div>
app/routes/posts/new.js
看起来像这样:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return {};
},
actions: {
save() {
var newPost = this.get('store').createRecord('post', this.currentModel);
newPost.save().then((post) => {
this.transitionTo('post', post);
});
},
cancel() {
this.transitionTo('posts');
}
}
});
这是post
模型:
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
body: DS.attr('string'),
comments: DS.hasMany('comment')
});
当我单击窗体上的save
按钮时,我在控制台上收到此错误:
POST http://localhost:4200/posts 400 (Bad Request)
进一步检查 Rails 服务器端的错误,我发现此错误:
ActionController::ParameterMissing (param is missing or the value is empty: post):
我不知道为什么表单中的参数没有与 POST 请求一起发送,我做错了什么?
您需要在模型钩子中返回一个新的空模型,而不是创建一个新的空模型并传递 props:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').createRecord('post', {});
},
actions: {
save() {
this.get('currentModel').save()
.then(post => this.transitionTo('post', post.get('id'));
},
cancel() {
this.transitionTo('posts');
}
}
});
相关文章:
- 微风-向请求添加标头
- 如何在Node.js中向Post请求添加查询
- 向ajax json请求添加缓存
- 将ajax请求添加到上一个ajax请求所附加的元素中
- 尝试向 jQuery AJAX 请求添加延迟
- 自动为 JavaScript 请求添加源映射标头
- 将数据从异步请求添加到 WebSQL 数据库时出错
- 余烬数据不会向后置请求添加参数
- 向某些请求添加基本授权标头
- 如何为Ajax请求添加/管理持久URL参数
- 如何在Backbone中向PUT请求添加尾部斜杠
- 向ajax post请求添加动态表单数据
- 服务器什么时候在Node.js中为请求添加侦听器?
- 事件,然后再发送Ajax请求(向请求添加一些数据)
- react-router将POST请求添加到URL
- 使用angular.js为HTTP请求添加自定义报头
- 我该如何使用Service Worker为我所有的API请求添加一个授权头?
- 将头请求添加到特定的ajax请求中
- 通过.ajax()请求添加动态HTML的正确方法
- 原型Ajax请求添加了一长串函数