【发布时间】:2015-09-12 00:08:58
【问题描述】:
您好,我有一个 ajax 调用:
$.ajax({
url: '<%= url_for( :controller => :users , :action => :search_user) %>',
data: {search: $("#suchfeld").val()}
})
.done(function (data) {
alert(msg);
})
现在我希望活动记录对象的控制器返回值将作为 json 对象返回。
我试过这个:
@users_search = User.where("lastname LIKE ?", "#{params[:search]}%").to_json
但我没有得到我想要得到的东西。
@users_search 是一个对象,所有用户都对应上述(工作)查询。
我得到了一些 HTML 代码 不是作为 json 对象的活动记录对象
我想要一个 json 对象,因为我想对其进行迭代
也试过这个:
.done(function () {
var array = <%= @users_search.to_json %>;
alert(array);
})
数组一直为空
编辑:
将代码更改为:
@userss = User.where("lastname LIKE ?", "#{params[:search]}%")
for user in @userss do
@users_to_add << {:id => user.id, :lastname => user.lastname}
end
@users_search << {:results => @users_to_add}.to_json
数组在控制台中看起来像:
["{\"results\":[{\"id\":1,\"lastname\":\"Hohlwegler\"},{\"id\":2,\"lastname\":\"Hohlwegler\"},{\"id\":5,\"lastname\":\"Hohlwegler\"},{\"id\":6,\"lastname\":\"Hohlwegler\"},{\"id\":11,\"lastname\":\"Hohlwegler\"}]}"]
更新:
不得不改成这样:
respond_to do |format|
format.json { render :json => { :results => @userss.map{ |u| { :id => u.id, :lastname => u.lastname } } } }
end
这将返回:[Object object]
.done(function (arr) {
alert(arr);
})
如果我做警报(arr[0].data);我无法读取未定义的数据
【问题讨论】:
-
请在问题edit 中包含您对
@users_search的期望以及实际情况。 -
添加了更多信息
-
添加了更多信息
-
检查名为 array 的 JavaScript 变量,看看你得到了什么。
-
已经试过了,array = null ...在我尝试的上面添加了一些代码
标签: jquery ruby-on-rails ruby ajax ruby-on-rails-4