Ruby on rails 试图通过curl将评论发布到我的帖子,但它没有';行不通

Ruby on rails 试图通过curl将评论发布到我的帖子,但它没有';行不通,ruby-on-rails,api,curl,Ruby On Rails,Api,Curl,我有一条路线 POST /posts/:post_id/comments(.:format) comments#create 我的评论有“内容”字段。假设我想在我的帖子上发表评论 因此,我试图通过curl发布一条评论,并执行以下命令 curl-X POST-H“内容类型:application/json”-d'{“comment”:“hello”}” 但我得到了一个动作控制器:异常被捕获 不知道为什么 控制器 # POST /comments

我有一条路线

 POST   /posts/:post_id/comments(.:format)             comments#create
我的评论有“内容”字段。假设我想在我的帖子上发表评论

因此,我试图通过curl发布一条评论,并执行以下命令 curl-X POST-H“内容类型:application/json”-d'{“comment”:“hello”}”

但我得到了一个动作控制器:异常被捕获

不知道为什么

控制器

# POST /comments                                                                                                                                            
  # POST /comments.json                                                                                                                                       
  def create                                                                                                                                                  
    @comment = @post.comments.new(comment_params)                                                                                                             

    respond_to do |format|                                                                                                                                    
      if @comment.save                                                                                                                                        
        format.html { redirect_to @comment, notice: 'Comment was successfully created.' }                                                                     
        format.json { render :show, status: :created, location: @comment }                                                                                    
      else                                                                                                                                                    
        format.html { render :new }                                                                                                                           
        format.json { render json: @comment.errors, status: :unprocessable_entity }                                                                           
      end                                                                                                                                                     
    end                                                                                                                                                       
  end           


# Never trust parameters from the scary internet, only allow the white list through.                                                                      
    def comment_params                                                                                                                                        
      params.require(:comment).permit(:comment)                                                                                                               
    end     
编辑:

编辑: curl-X POST-H“内容类型:application/json”-d'{“comment”:{“comment”:“test”}”

为我工作,但我有点困惑,为什么我为我的帖子做类似的卷发:
curl-H“内容类型:application/json”-d'{“title”:“有趣的标题”,“内容”:“酷东西”,“用户id”:2}”localhost:3000/posts
和我的post参数如下所示
params.require(:post).permit(:title,:Content,:user\id)


为什么不在curl散列中传递post就可以这样做?

您在这里说的是“对于comment对象,允许comment属性”

因此rails期望得到如下结果:

{"comment": {"comment": "hello"}}
如果你想快速修复->你需要使用上面的数据。
否则,您需要弄清楚一个真正的评论表单的数据是什么样子的,并更新您的require/permit行以匹配该行

Hi-如果您有异常。。。这意味着你的应用程序将生成一个stacktrace,这在帮助你找出到底哪里出了问题方面非常有用。您通常会在服务器窗口或日志文件中找到它,大约有20-40行各种文件的列表,顶部有一条错误消息。找到它,然后编辑你的问题并粘贴到那里,我们可以帮助你找出哪里出了问题。数据就是这样的?我是否必须将comment:作为键传递,因为它是嵌套路由?因为当我创建我的帖子时,我会做类似的post curl-H“Content-Type:application/json”-d'{“title”:“搞笑的title”,“Content”:“cool stuf”,“user_id”:2}”,我的帖子参数看起来像这个参数。require(:post)。permit(:title,:Content,:user_id)“comment”:{“comment”:“hello”}对我来说也不起作用。。分析请求参数时出错。内容:{comment:{comment:curl-X POST-H“内容类型:application/json”-d'{“comment”:{“comment”:“test”}'workedStack overflow注释的代码格式不好-因此,如果您尝试了此操作并出现错误,您是否可以编辑您的问题并说出您尝试过的内容,然后再次向我们提供完整的错误stacktrace?可能您的帖子没有问题,因为没有“post”属性(只包含title等),rails可能会混淆comment对象和comment属性,这就是为什么您需要它来发表评论而不是发表文章?
params.require(:comment).permit(:comment)
{"comment": {"comment": "hello"}}