我有这个jQuery在我的Rails应用程序:
$('#rankings_link a').click(function(){
$.ajax({
dataType: 'json',
contentType: 'application/json',
url: '/rankings',
type: 'get'
}).done(function(received_data){
for (var m = 0; m < received_data.length; m++) {
$('#rankings ol').append('<li>' + received_data[m] + '</li>');
}
});
});
在我的控制器中排名方法的最后是:
:render => 'json'
但是当我点击#rankings_link
时,它将我发送到/rankings
,并显示一大块预格式化的文本,如下所示:
["Farag, Ali", "Harrity, Todd", ...]
我希望能够将数组的每个元素(似乎是)放在有序列表中。但很明显,事情并不是这样的,我不知道为什么。
想法吗?
需要停止<a>
的默认动作(即打开href
属性指定的页面)
$('#rankings_link a').click(function(e){
e.preventDefault(); // <- this
// ...
});
添加:remote => true
作为链接参数,同时确保在application.js中有:
//= require jquery
//= require jquery_ujs
在将JSON发送到视图之前尝试验证它。
如果你能先发送一些硬编码的JSON就更好了。在线JSON查看器以一种很好的方式验证JSON。
你也可以手动创建JSON并将其呈现为文本,jQuery将返回JSON。
在activessupport中有to_json
方法,你也可以试试。