2013-02-13 44 views
0

已解決:我做了一些錯誤的事情,所有這些都涉及我的控制器接收數據。關於發送數據的方法沒有任何問題。如何通過外部RESTful呼叫插入RAILS db

1:我不使用@ report.save在我reportController#創建

2:我不傳遞PARAMS [:報告]在我的控制器

3:我添加 「skip_before_filter:verify_authenticity_token」到我的應用程序控制器來停止日誌中的警告。 解決。數據插入成功。

===== ORIG。下面的問題=====

我需要一個外部程序來發佈一個命令,將東西插入Ruby on Rails數據庫。 我明白這一點的安全含義,但由於這個應用程序並非面向公衆,所以它不是真正的問題。

這是我期待實現工作流程:

REST客戶端>扶手>創建新的數據庫錶行

爲了舉例:我route.rb文件包含

resources :reports 

所以我能夠使用這些路線CRUD。我似乎不能讓我的休息客戶端正常工作。

更新: 我試過一個RUBY休息客戶端和捲曲命令在一個,無濟於事。

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

解決:我做了幾件事情是錯誤的。 1:沒有在我的reportController中使用@ report.save#create – Pandem1c 2013-02-14 00:37:31

回答

1

而是在命令行卷曲,使用Ruby腳本和處理由寶石REST調用和JSON的轉換。例如,使用rest-client寶石(https://github.com/archiloque/rest-client)和標準json寶石,你可以寫:

require 'rest_client' 
require 'json' 

response = RestClient.post("http://localhost:8889/report.json", 
    params_in_hash.to_json, 
    { :content_type => :json, :accept => :json } 
) 
+0

我意識到這一點,並試圖無濟於事。但是錯誤不是描述性的。 這裏是我寫的 '需要 'rest_client'' '需要' json'' 'hash_to_send = {:TEST_NAME => 「假名」,:pass_fail => 「通行證」}'' 響應= RESTClient實現.POST( 「HTTP://本地主機:8889/report.json」, hash_to_send.to_json, :CONTENT_TYPE =>:JSON,:接受=>:JSON ) '' 提出response.inspect' 結果是500錯誤。 – Pandem1c 2013-02-13 19:42:55

+0

對不起,我不知道如何在響應中格式化我的代碼。反引號似乎不工作,如「幫助」中所述 – Pandem1c 2013-02-13 19:47:02

+0

糟糕,我誤導了你。嘗試將HTTP標頭放在哈希中:'{:content_type =>:json,:accept =>:json}'(原始文章已更新) – 2013-02-13 22:39:11