参数中的附加引号

时间:2015-02-02 15:27:05

标签: ruby-on-rails httprequest

我正在尝试向rails应用程序学习一个简单的东西。  问题是,当我尝试向我的rails应用程序发出HTTP post请求时,代码为:

uri = URI.parse("http://localhost:4000/posts")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data( :post=> {"name" => "My query", "title" => "50"} )
response = http.request(request)

当我查看控制台的传入帖子请求时,输出为:

Started POST "/posts" for 127.0.0.1 at 2015-02-02 16:14:12 +0100
Processing by PostsController#create as */*
  Parameters: {"post"=>"{\"name\"=>\"My query\", \"title\"=>\"50\"}"}
Completed 500 Internal Server Error in 1ms

NoMethodError (undefined method `permit' for "{\"name\"=>\"My query\", \"title\"=>\"50\"}":String):
  app/controllers/posts_controller.rb:72:in `post_params'
  app/controllers/posts_controller.rb:27:in `create'

仔细查看参数。为什么要添加额外的引号?如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

因为您正在发送字符串化的JSON对象。我不知道set_form_data在做什么,但你应该转换你的请求.to_json。 请看这个问题以供参考here