2017-04-06 5 views
0

正しいレスポンスをレールサーバーから作成する必要がありますが、その方法はわかりません。更新時にemberに応答するためにレールでJSONを処理する方法

これは私に

「WARNING:が発生しました 『スローエラーです『』ペイロードではなく、何のモデルは、モデル名が見つかりませんでした』状態を状態(解決モデル名フロントエンド@シリアライザ使用:ポスト:.modelNameFromPayloadKeyを(「ステータス」))」

コントローラ/ポスト/ edit.js

export default Ember.Controller.extend({ 
    actions:{ 
     submit: function(params){ 

     var self = this; 

     this.store.findRecord('post', params).then(function(post){ 
      post.save(); 
      self.transitionToRoute('posts'); 
     }); 

     } 
    } 
}); 

は、これは私が燃えさし

に私のポストを保存するとき、それがヒットしていますレール内の関数であります
def update 

     post = Post.find(params[:id]) 

     if post.update(strong_params) 
      render json: {status: "ok"} 
     else 
     render json: {status: "error"} 
     end 


    end 

モデル/ post.js

export default DS.Model.extend({ 
    title: DS.attr("string"), 
    body: DS.attr("string") 
}); 

だから私は、私の記事が更新されたりしませ

注ができたときに私に教えて、レールの私のJSONを扱う方法:ポストがsucessfully更新されますが、私の中でログコンソールにそのメッセージが表示され、正しく表示されます

+0

サーバーが無効なJSONを返すので、私たちのクリスタルボールを見てなぜ推測するのですか?まず、サーバーの応答方法を見て、[MVCE](https://stackoverflow.com/help/mcve)を構築します。 – max

+0

あなたの答えが信じられない、または私が問題を見ていたのは私だけだったので、質問を再整理する必要があります – Raxor

+0

私はあなたがJSONを返す必要はないと思っています。あなたは 'head:ok'だけ使うことができます。失敗した応答については、422の処理不能なエンティティ 'render json:{errors:@ post.errors.full_messages}、status :: unprocessable_entity'を返すべきです。これは、emberで使用されているアダプタに依存します。しかし、あなたのアプリケーションが正しいHTTPレスポンスコードを返すことを本当にお勧めします。 – max

答えて

0

Emberシリアライザは現在デフォルトのJSONAPISerializerです。これはあなたのJSONレスポンスがどのように表示されるべきかについて強い意見があります。代わりに、より基本的なシリアライザ(RESTSerializerなど)に切り替えると、おそらくエラーが表示されなくなります。さらに詳しい情報は、https://guides.emberjs.com/v2.12.0/models/customizing-serializers/

です。EmberとRailsを使用する利点の1つは、あらかじめ構築されたシリアライゼーションレイヤーを使用すると、 API。したがって、これらのオプションも検討する価値があります...

関連する問題