Почему ruby ​​на рельсах возвращает объект null вместо объекта json - PullRequest
2 голосов
/ 18 августа 2010

Я новичок в Rails, так что это действительно просто, и я уверен, что упускаю что-то простое. Я пытаюсь отправить JSON к действию и получить ответ в JSON. Упрощенная версия того, что я пробую, приведена ниже.

JQuery, который я использую:

var request = { 'voter': { 'voter_name': 'John', 'voter_email': 'john@john.com'} };

var url = 'http://someip/Voters/create';

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

Мое действие:

def create
    @voter = Voter.new(params[:voter])

    logger.info(@voter.to_json)

    render :json => @voter
end

Похоже, что это должно возвращаться просто отлично, особенно если учесть, что консоль показывает объект Voter просто отлично:

Processing VotersController#create (for someip at 2010-08-17 21:19:51) [POST]  
Parameters: {"voter"=>{"voter_name"=>"John", "voter_email"=>"john@john.com"}}
{"voter":{"created_at":null,"updated_at":null,"voter_email":"john@john.com","voter_name":"John"}}
Completed in 11ms (View: 1, DB: 0) | 200 OK [http://someip/Voters/create]

Проблема в том, что все мои оповещения (или любой другой способ, которым я пытаюсь посмотреть на эти данные), показывают мне нулевое значение. Ни один объект не возвращается. Любые указатели будут с благодарностью.

1 Ответ

1 голос
/ 18 августа 2010

Я думаю, вам нужно преобразовать экземпляр в JSON перед рендерингом. Как это:

render :json => @voter.to_json

Так же, как вы делаете это в выходных данных журнала отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...