2016-02-12 76 views
1

我正嘗試在我的rails後端上使用ember.js作爲前端創建資源。Ember Data不會將參數添加到發佈請求

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) 

進一步檢查在導軌上服務器端的錯誤,我發現這個錯誤:

ActionController::ParameterMissing (param is missing or the value is empty: post): 

我不知道爲什麼表單中的參數沒有和POST請求一起發送,我做錯了什麼?

回答

2

你會想在模型鉤子返回一個新的空模型VS創建一個新的,通過道具:

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'); 
    } 
    } 
}); 
+0

這給了我同樣的錯誤。 –

+0

你可以添加帖子模型嗎? –

+0

我已添加後期模型。 –