为什么ruby on rails返回null而不是json对象

时间:2010-08-17 23:29:35

标签: jquery ruby-on-rails ruby

我是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]

问题是我的警报(或我尝试查看此数据的任何其他方式)都显示为null。没有返回任何对象。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:1)

我认为你需要在渲染之前将实例转换为JSON。像这样:

render :json => @voter.to_json

就像在调试日志输出中一样。