只是在这里非常基本。我试图发布一个activeResource作为Json并在另一侧恢复它。目前,我似乎能够发送JSON,但不能将其重新创建为我选择的对象。替代activeResource.save(红宝石)
我试过用手在Ruby中用Json生成一个post请求。
有两部分需要注意:客户端的活动资源和处理传入请求的控制器。错误通常降低到406(请求不可接受)或422(不可处理实体) 我想基本问题是我该如何解决这些问题?
这是我的活动资源类。
class UserRequest < ActiveResource::Base
self.site = "http://localhost:3008"
self.format = :json
#do not define defs as 'self'.whatever
def post_me
res = Net::HTTP.post_form(URI.parse('http://127.0.0.1:3008/user_requests.xml'),
{'url' =>'www.stackoverflow.com', 'depth' => '50'})
end
end
#Just to clarify. If im sending Json, I change the URI to .json and If I'm using xml, I #remove the self.format because active resource is XML by default
这里是控制器中的行,将其变为活动记录。控制器名为UserRequestsController
def add_request
@user_request = UserRequest.new(params[:user_request])
.
.
. end
路线
match '/user_requests(.:format)' => 'user_requests#add_request', :via =>:post
现在摆几件事情每个人脸上的手掌和我发疯。
我知道在def for add_request中我缺少JSON.parse。这是因为当我包含它时,服务器端会出现500和未初始化的常量错误。宝石是绝对安装的,我不是唯一一个有这个问题的人,但可惜没有修复。
http://railsforum.com/viewtopic.php?id=4654 http://railsforum.com/viewtopic.php?id=28301
所以那里有一个问题是如何解决的解析,这样它的作品我想为我假设的方式406是因为它接收Json而不是发送它。 这将是理想但是如果它不能够或者有人能想出一个理由,为什么我应该使用XML,那么也许他们能在这看看,并告诉我,为什么我可能会得到它在服务器端
Started POST "/user_requests.xml" for 127.0.0.1 at Thu Jul 14 09:38:34 +0100 2011
Processing by UserRequestsController#add_request as XML
Parameters: {"depth"=>"50", "url"=>"www.stackoverflow.com"}
SQL (0.2ms) SELECT 1 FROM "user_requests" WHERE ("user_requests"."url" IS NULL) LIMIT 1
Completed 422 Unprocessable Entity in 18ms (Views: 3.9ms | ActiveRecord: 0.2ms)
只是最后一件事是我不使用.save是因为我的实习生计划的领导不喜欢,并说它不适合目的。
我刚刚在那里试过的东西。使用user_request.json发布,并且在控制器端不包含JSON.parse给出了相同的无法处理的实体问题 – overtone
如果您使用'JSON.parse'(或任何其他方法的'JSON'),则必须将JSON标准库加载到'要求'json'。 – Koraktor
@Koraktor我把宝石json放在gemfile中。要求json似乎给文件找不到。如果Json.parse工作,我仍然会得到422而不是406 – overtone