JqueryUI在Rails3中的自动完成
问题描述:
$(document).ready ->
$('#auto').autocomplete(source: "main/search")
超出了设置自动完成env的代码,'#auto'是一个输入字段。JqueryUI在Rails3中的自动完成
在我的主控制器我得到的搜索行动
def search
@user = User.find_by_name 'castiel'
respond_to do |format|
format.json { render :json => @user.to_json(:only => :name) }
end
end
一切似乎完全fine.When工作,我在char类型,比方说,一个“C”,所以Ajax请求被发送和接收的JSON数据。
在Firebug,它显示了Ajax请求顺利拿到低于
{"name":"castiel"}
JSON数据到目前为止好,但JSON数据的类型不是那种自动完成demanded.It要求是JSON数据是像下面。
{"id":"castiel", "label":"castiel", "value":"castiel"}
所以这里是问题,如何将josn数据修改为我想要的那种。
答
在成功的功能,你需要返回类似
.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
}
}));
答
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散列中的值。最后一个参数为任何额外的选项,它可以在这里找到:
你能告诉我们您的ERB文件?如果我记得很清楚,有一个称为自动完成的div,当自动完成获取响应时会出现。你必须写一个小的erb.html来处理你的控制器的响应。我一年前做了同样的事情......但我现在无法访问我的代码... – Cygnusx1
感谢您的信息,我刚刚更新了我的question.new问题刚刚出来。 – castiel