$(document).ready ->
$('#auto').autocomplete( source: "main/search" )
除了设置自动完成环境之外的代码,“#auto”是输入字段。
在我的主控制器中,我得到了搜索操作
def search
@user = User.find_by_name 'castiel'
respond_to do |format|
format.json { render :json => @user.to_json(:only => :name) }
end
end
一切似乎都运行得很好。当我输入一个字符时,我们说一个“c”,所以发送了ajax请求并收到了json数据。
在firebug中,它显示了ajax请求成功获取下面的json数据
{"name":"castiel"}
到目前为止一切顺利,但json数据的类型并不是自动完成所要求的类型。它要求json数据如下所示。
{"id":"castiel", "label":"castiel", "value":"castiel"}
所以这里有问题,如何将josn数据修改为我想要的那种。
答案 0 :(得分:0)
在成功功能中,您需要返回类似
的内容.autocomplete({
source: function(request, response){
$.ajax({
url: "main/search",
dataType: "json",
data: {
style: "full",
maxRows: 12,
term: request.term
},success: function( data ) {
response( $.map( data, function( user ) {
return {
label: user.name,
value: user.id
}
}));
答案 1 :(得分:0)
Rails允许您在控制器的任何结构中提供JSON。使用jQuery自动完成帮助程序时,使用自动完成库方法json_for_autocomplete以所需格式提供JSON,如下所示:
# app/controllers/example_controller.rb
def autocomplete_example
items = Example.where(...)
respond_to do |format|
format.json do
render :json => json_for_autocomplete(items, 'name', [])
end
end
end
json_for_autocomplete的第一个参数是要返回的对象集合。第二个是调用这些对象来定义JSON哈希值的方法。最后一个参数适用于任何额外选项,可在以下位置找到: