模型挂钩抛出错误。 Ember
Model hook throwing error. Ember
在我的应用程序中,用户有很多餐点。饭菜属于用户。我拥有它,因此用户当前可以通过创建记录并保存来 post 一顿饭。完成此操作后,我的控制台立即抛出错误:
Error: Assertion Failed: You need to pass a model name to the store's modelFor method at new Error (native)
然后当我开始收到错误时,我写了我的模型挂钩:
TypeError: Cannot read property 'some' of undefined
我不确定是什么原因造成的。这是我的代码:
用户模型:
import DS from 'ember-data';
import { hasMany } from 'ember-data/relationships';
export default DS.Model.extend({
email: DS.attr('string'),
height: DS.attr('number'),
weight: DS.attr('number'),
age: DS.attr('number'),
tdee: DS.attr('number'),
gender: DS.attr('string'),
activity_level: DS.attr('number'),
meals: hasMany('meal')
});
膳食模型:
import DS from 'ember-data';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default DS.Model.extend({
meal_type: DS.attr('string'),
created_at: DS.attr('date'),
user: belongsTo('user'),
// meal_items: hasMany('meal_item')
});
用餐路线:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').findAll('meal');
},
actions: {
createMeal(data) {
let meal = this.get('store').createRecord('meal', data);
meal.save();
}
}
});
我是 ember 的新手,但有预感它可能与显式逆相关?一个建议表示赞赏。如果需要说明,我可以 post 更多代码。
编辑:
向服务器的GET请求成功。膳食数据在DS中
所以我将 createMeal 操作传递给我的 create-meal 组件:
{{create-meal meals=model createMeal="createMeal"}}
组件在提交时发送此操作:
import Ember from 'ember';
export default Ember.Component.extend({
form: {},
actions: {
submit (){
this.sendAction('createMeal', this.get('form'));
}
}
});
这是该组件的模板:
<label class="col-md-3">Create A Meal</label>
<div class="input-group col-md-8 col-centered create-meal-div">
{{input value=form.meal_type type="text" class="form-control" placeholder="Enter Meal Name" aria-describedby="basic-addon2"}}
<span class="input-group-addon" id="basic-addon2"><button type="submit" class="btn-primary" {{action "submit" form on "submit"}}> Start Adding Food</button></span>
</div>
<div class="col-md-6 food-search-div">
{{food-search}}
</div>
编辑 2:
rails 控制器膳食创建操作:
def create
# binding.pry
@meal = current_user.meals.build(meal_params)
if @meal.save
render json: @meal, status: :created, location: @meal
else
render json: @meal.errors, status: :unprocessable_entity
end
end
已解决:
删除我膳食模型中的 user: belongsTo('user'),
消除错误。
我认为问题出在这一行 - router
return this.get('store').findAll('meal');
试试这个,但奇怪的是它应该可以工作
model() {
return this.store.findAll('meal');
}
当你在路线内部时,你需要使用 this.get('store') 内部控制器 this.store。尝试一下,让我知道它是否有效。同样在你的路线中设置接受模型作为参数的动作,就像这样
actions: {
update(model){
model.save().then( ....
这可以从这样的模板中触发
<form {{action 'update' model on='submit'}} autocomplete="off">
这样你就不需要在你的路线中获得this.store - 你将有一个模型通过并且你可以去保存
希望对您有所帮助
编辑:这也会阻止 ember cli 预编译
用户:属于('user'),
// meal_items: hasMany('meal_item')
所以应该没有 ,
用户:属于('user')
// meal_items: hasMany('meal_item')
在我的应用程序中,用户有很多餐点。饭菜属于用户。我拥有它,因此用户当前可以通过创建记录并保存来 post 一顿饭。完成此操作后,我的控制台立即抛出错误:
Error: Assertion Failed: You need to pass a model name to the store's modelFor method at new Error (native)
然后当我开始收到错误时,我写了我的模型挂钩:
TypeError: Cannot read property 'some' of undefined
我不确定是什么原因造成的。这是我的代码:
用户模型:
import DS from 'ember-data';
import { hasMany } from 'ember-data/relationships';
export default DS.Model.extend({
email: DS.attr('string'),
height: DS.attr('number'),
weight: DS.attr('number'),
age: DS.attr('number'),
tdee: DS.attr('number'),
gender: DS.attr('string'),
activity_level: DS.attr('number'),
meals: hasMany('meal')
});
膳食模型:
import DS from 'ember-data';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default DS.Model.extend({
meal_type: DS.attr('string'),
created_at: DS.attr('date'),
user: belongsTo('user'),
// meal_items: hasMany('meal_item')
});
用餐路线:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').findAll('meal');
},
actions: {
createMeal(data) {
let meal = this.get('store').createRecord('meal', data);
meal.save();
}
}
});
我是 ember 的新手,但有预感它可能与显式逆相关?一个建议表示赞赏。如果需要说明,我可以 post 更多代码。
编辑:
向服务器的GET请求成功。膳食数据在DS中
所以我将 createMeal 操作传递给我的 create-meal 组件:
{{create-meal meals=model createMeal="createMeal"}}
组件在提交时发送此操作:
import Ember from 'ember';
export default Ember.Component.extend({
form: {},
actions: {
submit (){
this.sendAction('createMeal', this.get('form'));
}
}
});
这是该组件的模板:
<label class="col-md-3">Create A Meal</label>
<div class="input-group col-md-8 col-centered create-meal-div">
{{input value=form.meal_type type="text" class="form-control" placeholder="Enter Meal Name" aria-describedby="basic-addon2"}}
<span class="input-group-addon" id="basic-addon2"><button type="submit" class="btn-primary" {{action "submit" form on "submit"}}> Start Adding Food</button></span>
</div>
<div class="col-md-6 food-search-div">
{{food-search}}
</div>
编辑 2:
rails 控制器膳食创建操作:
def create
# binding.pry
@meal = current_user.meals.build(meal_params)
if @meal.save
render json: @meal, status: :created, location: @meal
else
render json: @meal.errors, status: :unprocessable_entity
end
end
已解决:
删除我膳食模型中的 user: belongsTo('user'),
消除错误。
我认为问题出在这一行 - router
return this.get('store').findAll('meal');
试试这个,但奇怪的是它应该可以工作
model() {
return this.store.findAll('meal');
}
当你在路线内部时,你需要使用 this.get('store') 内部控制器 this.store。尝试一下,让我知道它是否有效。同样在你的路线中设置接受模型作为参数的动作,就像这样
actions: {
update(model){
model.save().then( ....
这可以从这样的模板中触发
<form {{action 'update' model on='submit'}} autocomplete="off">
这样你就不需要在你的路线中获得this.store - 你将有一个模型通过并且你可以去保存
希望对您有所帮助
编辑:这也会阻止 ember cli 预编译
用户:属于('user'), // meal_items: hasMany('meal_item')
所以应该没有 ,
用户:属于('user') // meal_items: hasMany('meal_item')