0

解決済み: いくつか間違ったことをしましたが、そのすべてがコントローラーのデータ受信に関係していました。データの送信に関して、以下の方法に問題はありませんでした。

1: reportController#create で @report.save を使用していませんでした

2: コントローラーで params[:report] を渡していませんでした

3: "skip_before_filter :verify_authenticity_token" をアプリケーション コントローラーに追加して、ログの警告を停止しました。解決しました。データの挿入に成功しました。

=====元。以下の質問=====

Ruby on Rails データベースに何かを挿入するコマンドを発行するには、外部プログラムが必要です。これによるセキュリティへの影響は理解していますが、このアプリケーションは公開されていないため、実際には問題になりません。

これは私が達成しようとしているワークフローです:

REST クライアント > RAILS > 新しい DB TABLE 行を作成する

例として、私の route.rb ファイルには以下が含まれています。

resources :reports

そのため、これらのルートを使用して CRUD を実行できます。残りのクライアントを正しく動作させることができないようです。

更新: 1 つの 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 スクリプトを使用し、gem による 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 に答える