rails + angular upvoting评论通过json无法正常工作

时间:2017-02-17 22:45:38

标签: ruby-on-rails angularjs json heroku

我正在开发一个包含帖子和评论的rails应用。现在它渲染和API,并使用角度访问该API。

现在一切正常但正在推进。我一直收到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>

rails controller

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

这似乎相对简单,但我没有从heroku那里得到任何关于它为什么渲染422的错误。如果有人能够看到我做错了什么,那么非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

解决方案是将其添加到应用程序控制器:skip_before_filter :verify_authenticity_token。在那之后,现在一切正常。