私は投稿とコメントのレールアプリに取り組んでいます。現在はレンダリングと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
これは比較的単純であるように思わ、私はからすべてのエラーを取得しておりませんなぜそれがレンダリングされているのかについてのヒロク422
。 skip_before_filter :verify_authenticity_token
:誰もが私が間違ってやっているかを見ることができた場合は、任意のヘルプは非常に
だけヒント:あなたは、オブジェクトが(「toPutを」と言う)と、そのオブジェクトにプロパティとしてcommentIdとpostIdを追加作成しようとしましたか?したがって、http.put呼び出しのデータ部分にオブジェクト自体を送信する必要があります。 – flashjpr