2010-08-17 2 views
2

Я новичок в Rails, поэтому это действительно базовый, и я уверен, что мне не хватает чего-то простого. Я пытаюсь отправить JSON на действие и получить его, чтобы вернуть ответ в JSON. Ниже приводится упрощенная версия того, что я пытаюсь сделать.Почему Ruby на рельсах возвращает null вместо объекта json

JQuery Я использую:

var request = { 'voter': { 'voter_name': 'John', 'voter_email': '[email protected]'} }; 

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 

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

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

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

+0

Что вы видите, если ударили это действие с помощью 'curl'? Является ли ответ пустым? – cam

+0

Я застрял в окне окна в данный момент, так что это очень хороший вопрос. Если я получаю доступ к этому действию непосредственно в своем браузере с помощью GET, я вижу: {"voter": {"created_at": null, "updated_at": null, "voter_email": null, "voter_name": null}} – Jared

+0

Является ли URL, который вы отправляете в другой домен со страницы, занимающейся публикацией? –

ответ

1

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

render :json => @voter.to_json 

Так же, как вы делаете в своем отладочном журнале.

+0

Спасибо за ответ. Я попробовал это, и это, похоже, не имело никакого значения. – Jared

Смежные вопросы