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"}}