Rails3 ActiveResource Post Call доставляет пустой хэш параметра - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь создать нового человека в приложении API Sinatra из приложения Rails3, используя ActiveResource и Json.В Rails3 я создал модель «Person» и, используя ActiveResource, я правильно вызываю API, который правильно читает URL, но кажется, что никакие параметры не передаются с объектом.

Из Rails3 Person Модель:

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

Из приложения Sinatra:

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

ИспользованиеIRB Console это работает:

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

Может кто-нибудь подсказать, что я пропустил или делаю неправильно, спасибо.

1 Ответ

0 голосов
/ 20 сентября 2011

Объект Person должен знать атрибуты, как вы это делали в консоли.При выполнении Person.find он получает атрибуты через activeresource, но Person.new не знает их, поэтому для Person требуется новый способ сообщить Person.new, например:

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

этот ответ?

...