2017-02-17 5 views
0

私は投稿とコメントのレールアプリに取り組んでいます。現在はレンダリングとAPIがあり、そのAPIにはangleを使用してアクセスしています。今すべてが働くが、upvoting機能さレール+角度upvotingコメントjsonは動作していない

。私は422のエラーが発生し続けているのですが、理由は分かりません。私はなど、レール側の私のコントローラがよさそうだ、それを角度で右ルートを与えているが、私はまだエラーを取得しています:ここで422 (Unprocessable Entity)

は私の角度コードが

service.js

です
upvoteComment: function(postId, commentId, callback) { 
$http({ 
    url: 'https://url.com/posts/' + postId + '/comments/' + commentId + '/upvote.json', 
    method: 'PUT', 
    data: { comment_id: commentId, post_id: postId } 
}).success(function(response) { 
    callback(response); 
}).error(function(error) { 
    callback(error); 
}) 
} 

controller.js

$scope.upvoteComment = function(postId, commentId) { 
    PostService.upvoteComment(postId, commentId, function(data) { 
    console.log("inside upvoteComment"); 
    console.log(data); 
    }) 
} 

view.js

<ul ng-repeat="comment in post.comments"> 
    <li>{{comment.body}}</li> 
    <span>{{comment.upvotes}}</span> 
    <button ng-click="upvoteComment(post.post.id, comment.id)">upvote</button> 
</ul> 

レールコントローラ

def upvote 
    comment = Comment.find(params[:comment_id]) 
    comment.upvote += 1 
    if comment.save 
     render json: comment.to_json, status: 200 
    else 
     render json: comment.errors.full_messages.to_sentence, status: :unprocessable_entity 
    end 
    end 

レールルート

resources :posts, only: [:index, :create, :show, :destroy] do 
    member do 
     put '/upvote' => 'posts#upvote' 
    end 
    resources :comments, only: [:create, :destroy] do 
     put '/upvote' => 'comments#upvote' 
    end 
    end 

これは比較的単純であるように思わ、私はからすべてのエラーを取得しておりませんなぜそれがレンダリングされているのかについてのヒロク422skip_before_filter :verify_authenticity_token:誰もが私が間違ってやっているかを見ることができた場合は、任意のヘルプは非常に

+0

だけヒント:あなたは、オブジェクトが(「toPutを」と言う)と、そのオブジェクトにプロパティとしてcommentIdとpostIdを追加作成しようとしましたか?したがって、http.put呼び出しのデータ部分にオブジェクト自体を送信する必要があります。 – flashjpr

答えて

0

をいただければ幸い解決策は、単にアプリケーションのコントローラにこれを追加することでした。その後、すべてうまく動作します。

関連する問題