2013-02-13 1 views
0

해결 : 몇 가지 잘못된 작업을 수행했습니다.이 모든 작업에는 데이터를 수신하는 컨트롤러가 필요했습니다. 아래의 데이터 전송 방법에는 문제가 없습니다.외부 RESTful 호출을 통해 RAILS DB에 삽입하는 방법

1 : 내 reportController 번호에 @를 report.save를 사용하지 않은 만들

2 :

3 내 컨트롤러에서 [보고서] : 나는 PARAMS을 통과하지 않은 내가 "skip_before_filter : verify_authenticity_token"추가 로그에서 경고를 중지하려면 내 애플리케이션 컨트롤러에 연결하십시오. 해결되었습니다. 데이터 삽입에 성공했습니다.

===== ORIG. 아래 질문 =====

Ruby on Rails 데이터베이스에 내용을 삽입하는 명령을 실행하려면 외부 프로그램이 필요합니다. 본인은이 문제가 보안에 미치는 영향을 이해하고 있지만이 신청서는 공개 된 것이 아니기 때문에 실제로 문제가되지 않습니다. >

REST 클라이언트> 레일을 예를의 목적을 위해 새로운 DB 테이블 행

를 만들 :

이 내가 달성하기 위해 찾고 워크 플로 내 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 # create에 @ report.save를 사용하지 않았습니다. – Pandem1c

답변

1

명령 줄에서 컬하는 대신 루비 스크립트를 사용하고 REST 호출 및 JSON 변환을 gem로 처리하십시오. 예를 들어, 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

저는 이것을 알고 있으며 아무런 노력을하지 않았습니다. 그러나 그 오류는 설명 적이지 않습니다. {: test_name => "가짜 이름": pass_fail => "패스"}' '응답 = 위해 RESTClient 여기 내가 json'' 'hash_to_send = ' '요구를 rest_client''' 가'필요로 쓴 것입니다 .post ("에 http : // localhost를 : 8889/report.json" hash_to_send.to_json, : 콘텐츠 _ => JSON은 :이> =를 수락 : JSON 는) ' 'response.inspect'두고 결과는 500 오류입니다. – Pandem1c

+0

죄송합니다. 응답에서 코드의 형식을 지정하는 방법을 모르겠습니다. 백틱은 "도움말"에 설명 된대로 작동하지 않는 것 같습니다. – Pandem1c

+0

죄송합니다. 나는 당신을 속였습니다. 해시에 HTTP 헤더를 넣으십시오 :'{: content_type => : json, : accept => : json}'(원래 게시물은 이미 업데이트 됨) –

관련 문제