2011-06-22 2 views
1

ActiveResourceとJsonを使用してRails3アプリからSinatra APIアプリケーションで新しい「Person」を作成しようとしています。 Rails3では、 "Person"モデルを作成し、ActiveResourceを使用してURLを正しく読み取るAPIを正しく呼び出しますが、パラメータはオブジェクトと一緒に渡されないようです。 Rails3人モデルからRails3 ActiveResourceポストコールで空のパラメータハッシュが返される

class Person < ActiveResource::Base 
    self.site = "http://127.0.0.1:9393/" 
    self.collection_name = "person/add" 
    self.format = :json 
end 

Rails3コンソールから:

u=Person.new({"last_name"=>"Bill", "first_name"=>"Smith"}) 
=> #<Person:0xb73176f0 @attributes={"last_name"=>"Bill", "first_name"=>"Smith"}, @prefix_options={}> 
puts u.attributes 
=> last_nameBillfirst_nameSmith 
u.save 
=> True 

シナトラアプリから:

puts @app.params.keys 
=> Nil 
puts @app.params['last_name'] 
=> Nil 
puts @app.params[:last_name] 
=> Nil 

この作品IRBコンソールを使用する場合:

Net::HTTP.post_form(URI.parse('http://127.0.0.1:9393/user/add.json'),{'first_name' => 'Smith', 'last_name' => 'Bill'}) 

誰かが私が逃したものについて何か指示を与えてもらえますか、間違ってやっていますか?

答えて

0

Personオブジェクトは、コンソールで行ったように、属性を知っている必要があります。 Person.findを行うとき、それはactiveresource経由attrsにを取得しますが、人に伝えるために任意のウェイは、次のようにPerson.newで必要とされるようにPerson.newは彼らを知らない:

class PeopleController < ApplicationController 
    ... 
    def new 
    @person = Person.new(:name=>nil, :age=>nil, ...) 
    end 
    ... 

この回答をい?

関連する問題