0

已解决:我做错了一些事情,所有这些都涉及我的控制器接收数据。以下发送数据的方法没有任何问题。

1:我没有在我的 reportController#create 中使用@report.save

2:我没有在我的控制器中传递 params[:report]

3:我将“skip_before_filter:verify_authenticity_token”添加到我的应用程序控制器以停止日志中的警告。解决了。数据插入成功。

=====ORIG。下面的问题=====

我需要一个外部程序来发出将内容插入 Ruby on Rails 数据库的命令。我理解这对安全的影响,但因为这个应用程序不是面向公众的,所以这不是一个真正的问题。

这是我希望实现的工作流程:

REST 客户端 > RAILS > 创建新的 DB TABLE 行

举例来说:我的 route.rb 文件包含

resources :reports

所以我能够使用这些路线进行 CRUD。我似乎无法让我的休息客户正常工作。

更新:我在 ONE 中尝试了一个 RUBY 休息客户端和 curl 命令,但无济于事。

require 'rest_client'
require 'json'

hash_to_send = {:test_name => 'Fake Name', :pass_fail => 'pass',:run_id => 1111, :category => 'Fake Category'}

#formulate CURL attempt
myCommand =  "curl -H 'Content-Type: application/json' -X POST   http://localhost:8889/report.json -d #{hash_to_send.to_json} > deleteme.html"
#execute CURL attempt
`#{myCommand}` # RESULT--> 795: unexpected token at 'test_name:Fake Name'


#Make Ruby rest client attempt
response = RestClient.post( "http://localhost:8889/report.json", 
  hash_to_send.to_json, 
  :content_type => :json, :accept => :json
)

#debug info 
puts myCommand # Returns --> {"test_name":"Fake Name","pass_fail":"pass","run_id":1111,"category":"Fake Category"}
4

1 回答 1

1

代替命令行中的 curl,使用 ruby​​ 脚本并通过 gems 处理 REST 调用和 JSON 转换。例如,使用rest-clientgem ( https://github.com/archiloque/rest-client ) 和标准jsongem,您可以编写:

require 'rest_client'
require 'json'

response = RestClient.post( "http://localhost:8889/report.json", 
  params_in_hash.to_json, 
  { :content_type => :json, :accept => :json }
)
于 2013-02-13T19:35:00.533 回答