2

我是 Angular 新手,正在尝试使用 Angular 将嵌套资源发布到我的 Rails 后端。我正在使用两种模型:帖子和评论。一个帖子有很多评论。我正在通过我的 PostsController 中的“包含”在我的帖子中呈现我的评论。

我可以通过我的浏览器使用 Angular 创建新帖子;但是我一生都无法弄清楚如何创建新评论。尝试输入评论时,我在 js 控制台中收到此错误:

POST http://localhost:3000/posts/1/comments 400 (Bad Request) angular.js?body=1:9313

我在 Rails 控制台中收到这些错误:

Started POST "/posts/1/comments" for 127.0.0.1 at 2013-09-02 18:41:24 -0700
Processing by CommentsController#create as JSON
  Parameters: {"post_id"=>"1"}
Completed 400 Bad Request in 1ms

ActionController::ParameterMissing (param not found: comment):
  app/controllers/comments_controller.rb:34:in `comment_params'
  app/controllers/comments_controller.rb:12:in `create' 

我尝试了几种不同的方法并尝试复制这篇文章中的逻辑(Angular JS ngResource with nested resources),但无济于事。

这是我的工厂:

factoriesModule.factory "Post", ["$resource", ($resource) ->
  $resource("/posts/:id", {id: "@id"},{
  update: {method: "PUT"}
})
]

factoriesModule.factory "Comment", ["$resource", ($resource) ->
  $resource("/posts/:post_id/comments/:id", {id: "@id", post_id: "@post_id"},
  update: {method: "PUT"}
)
]

这是我的控制器:

@PostingCtrl = ["$scope", "Post", ($scope, Post) ->
$scope.posts = Post.query()

$scope.addPost = ->
post = Post.save($scope.newPost)
$scope.posts.push(post)
$scope.newPost = {}
]

@CommentingCtrl = ["$scope", "Comment", "$http", ($scope, Comment, $http) ->
 $scope.comments = Comment.query({post_id: @post_id, id: @id})

$scope.addComment = (post_id, data) ->
  console.log $scope.newComment.text
$http.post("/posts/" + post_id + "/comments", data).success alert 'hi' 
]

我正在为 addComment 使用 $http 服务,因为这是我发现给我的评论提供 post_id 的唯一方法(使用我的视图逻辑)。为冗长的帖子道歉,非常感谢您的帮助!

4

0 回答 0