Отправка объекта JSON в Rails через Post - PullRequest
2 голосов
/ 11 июля 2011

Это довольно простой вопрос, и я пытаюсь преодолеть пробелы в моих знаниях.

Проще говоря, приложения работают следующим образом: 1: i: веб-приложение создает хэш значений 1: ii: превращает этот хеш в JSON 1: iii: отправляет JSON в другое приложение через POST THIS IS THEОСНОВНОЙ ВОПРОС

2: i: другое веб-приложение получает JSON, десериализуется и превращается в объект.

@hostURL = 'http://127.0.0.1:20000/sendJson'

Для 1 у меня есть i и ii.Не слишком сложно.

@myHash = HASH.new
    @myHash =
    {
      "myString" => 'testestestes'
      "myInteger" => 20
    }

    @myJsonHash = @myHas.to_json

Отправка почтового запроса в моем приложении выглядит следующим образом:

  res = Net::HTTP.post_form(URI.parse(@hostURL),
    {'myString'=>'testestestest, 'myInteger' => 20})

Однако я не знаю, как передать хэш JSON черезpost.

Что касается 2:

  @request = UserRequest.new({:myString => params[:myString], :myInteger => params[:myInteger] })
           if @request.save
    #ok
      puts "OBJECT CREATED AND SAVED"
    else
    #error
      puts "SOMETHING WENT WRONG WITH OBJECT CREATION"

Будет ли этого достаточно, поскольку я слышу, что Rails автоматически десериализуется при получении запроса.


С другой стороны: Чтодолжен ли быть ответ?

Это 2 веб-приложения, которые обмениваются данными, поэтому возвращение html-кода было бы плохо.Возможно числовой ответ?200?404?

Существуют ли какие-либо отраслевые стандарты, когда речь идет об ответах с данными, а не об ответе браузером

1 Ответ

2 голосов
/ 11 июля 2011

Вы хотите использовать from_json, что противоположно to_json.Это возьмет объект, отправленный в JSON, и преобразует его в ruby, чтобы ваша модель или как бы вы ни сохранили ее, поймет.

@post = Post.new
@post.name = "Hello"

#this converts the object to JSON
@post.to_json 

@post = You want to use `from_json` which does the opposite of `to_json`. This will take the object being sent in JSON and convert it into ruby so your model or however you save it will understand.


@post = Post.new
@post.name = "Hello"

#this converts the object to JSON
@post.to_json 

@post = {
     "name" => 'Hello'
   }   

#this puts it back into JSON
@post.from_json

@post.name = "Hello"
@post.to_json

С точки зрения отправки JSON (на стороне сервера) в контроллер, который обычно выполняетсяиз JavaScript или AS3.

Вы должны объяснить, как вы публикуете.Из формы, из ссылки.Это имеет значение;тем не менее, самый простой способ - использовать jQuery.

$.ajax({
    type: 'POST',
    url: url,
    data: data,
    success: success,
    dataType: json
});

Здесь вы хотите, чтобы url был URL-адресом поста, например app.com/posts (ваш домен, а затем контроллер), а затемданные должны быть в формате JSON, например:

data = {
         "name" => 'Hello'
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...