2010-08-17 145 views
2

我是Rails的新手,所以这是非常基本的,我敢肯定我缺少一些简单的东西。我试图发送一些JSON到一个动作,并让它在JSON中返回一个响应。下面是我尝试的简化版本。为什么ruby在rails上返回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] 

问题是,我的警报(或任何其他方式,我试图看看这个da ta)都显示我null。没有对象正在返回。任何指针将不胜感激。

+0

如果用'curl'命中该动作,你会看到什么?答案是否为空? – cam 2010-08-17 23:35:21

+0

此刻,我被困在一个窗口框中,所以这是一个非常好的问题。如果我在GET浏览器中直接访问该操作,我会看到: {“voter”:{“created_at”:null,“updated_at”:null,“voter_email”:null,“voter_name”:null}} – Jared 2010-08-17 23:44:38

+0

您正在发布的网址与发布网页的网址不同吗? – 2010-08-17 23:58:23

回答

1

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

render :json => @voter.to_json 

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

+0

感谢您的回复。我试过了,它似乎没有什么区别。 – Jared 2010-08-18 00:28:10

相关问题