2011-04-29 167 views
15

我试图模拟POST到我简单的Rails脚手架Web服务。脚手架创建的文件没有改变。当我从网站表单发布数据时,正确创建了一条记录。curl命令行POST

当我尝试使用curl进行POST时,数据库中会创建一条记录,但它的字段中有NULL值,'updated_at'和'created_at'除外。我是新来的命令行卷曲,所以我可能没有正确地做。

curl -d "name=Gazoo&friend=Rubble" localhost:3000/flintstones 

我回来这从​​使用WEBrick:

开始POST “/摩登原始人” 为127.0.0.1,在周四04月28日18时04分47秒-0600 2011处理由FlintstonesController#创建为参数: {“name”=>“Gazoo”,“friend”=>“Rubble”} AREL(0.3ms)INSERT INTO“flintstones”(“name”,“friend”,“created_at”,“updated_at”)VALUES(NULL, NULL, '2011-04-29 00:04:47.779902', '2011-04-29 00:04:47.779902')重定向到http://localhost:3000/flintstones/4

后查看该JSON

卷曲本地主机:3000/flintstones.json

我收到:

[{ “打火石:{” 名 “:空,” created_at “:” 2011- 04-29T00:09:58Z“,”updated_at“:”2011-04-29T00:09:58Z“,”id“:4,”friend“:null}}]

为什么我会在我的空字段?

在此先感谢。

+0

看来url参数没有传递给sql插入,而是NULL插入。 – 2011-04-29 00:51:27

+0

这是正确的丹。我的问题是为什么? – Kurt 2011-04-29 01:14:40

回答

22

我GOOGLE了一下,使用curl与轨道网络服务的每一个示例显示了格式传递的参数

object[paramName]=paramValue

以及每个参数这将使一个-d设置你的卷曲声明样子

curl -d "flintstone[name]=Gazoo" -d "flintstone[friend]=Rubble" localhost:3000/flintstones

下面是我引用来源:

+0

谢谢杰夫。我看过你引用的第二个来源,这没有帮助。第一个,我没有看到,是有帮助的。你上面的解决方案做到了。现在开始为我的试用iOS应用程序使用ASIHttpFormRequest或RestKIT。 – Kurt 2011-04-29 01:13:42

+0

看看格式化如何让博客文章对读者来说更有效率。 – 2011-04-29 01:39:08

+0

如果您需要验证,请看这里:https://robots.thoughtbot.com/curling-with-rails-authenticity-token。几个参数也可以使用& – Zane 2016-11-08 18:39:04

3

的Rails(默认)不找后身体的方式提供, “name=Gazoo&friend=Rubble”。它寻找这个计划 - 因为你的模型是Flintstones,你的领域是名字和朋友 - “Flintstone[name]=Gazoo&Flintstone[friend]=Rubble”。这是来自表单发布的邮件主体的DSL。