1

ここにいるこの初心者は、Rails を介した Web サービスで頭を悩ませています。おそらく誰かが私の痛みを和らげることができますか?

簡単な Rails アプリを作成し、足場 MyRecords を生成しました。次に、以下のコードを使用してirb経由でレコードを作成しようとしています:

testWS.rb

require 'HTTParty'

class MyRecordCreate
  include HTTParty
  base_uri 'localhost:3000'

  def initialize(u, p)
    @auth = {:username => u, :password => p}
  end

  def post(text)
    options = { :body => { name:text} }
    self.class.post('/my_records', options)
  end
end


response = HTTParty.get("http://localhost:3000/my_records/new.json")
print response

record = MyRecordCreate.new("","").post("test remote record")
print record

上記のコードで、なんとかレコードを作成できました。問題は、私のレコード (列「名前」しかない) が空の名前で作成されていることです!

これに関する提案はありますか?

この絶望を少しずつ切り裂いていきたい。

貢献していただきありがとうございます。

4

1 に答える 1

0

次の 2 行を HTTParty クラスに追加してみてください。

format :json
headers "Accept" => "application/json"

これらは、httparty と、JSON を送受信するために接続するリモート サービスに指示します。あなたの例 (URL の末尾に .json を使用) では、2 行目を追加する必要はありませんが、それは良い習慣であり、とにかくそのままにしておきます。

次の問題は、Rails が、アップロードされたデータがオブジェクトの最上位の名前の中にあると想定していることです。したがって、あなたの例では、オプション行は次のようになります。

options = { :body => { :person => { :name => text } } }

person作成しようとしているモデルの名前に置き換えます。

于 2012-06-25T17:36:45.270 に答える