我正在尝试使用远程服务来填充rails中的自动完成字段。按姓氏查询返回可录用人员
我的控制器中有一个名为employeeAutocomplete的操作,它从外部数据库收集数据:
class ServicesController < ApplicationController
def employeeAutocomplete
@banner = employeeSearch(params[:term])
respond_to do |format|
format.json { render :json => @banner.to_json }
end
end在我的routes.rb中,我有一个占位符路由:
match '/banner/cheese' => 'services#employeeAutocomplete'我可以成功地浏览到http://0.0.0.0:3000/banner/cheese.json?term=mac,并收到如下所示的包含员工数据的数组:
[ {"LAST_NAME": "MacDougal", "FIRST_NAME": "Elaine", "TITLE": "Internet Technician"}, {"LAST_NAME": "MacCallum", "FIRST_NAME": "Harvey", "TITLE": "Systems Architect"} ]但是,这不适用于自动完成字段。下面是我的视图的javascript:
$("#service_employeeLast").autocomplete({
source: "/banner/cheese.json"
});我在firebug控制台中收到一个错误:

我无计可施了。我不知道我做错了什么,我已经尝试了两个不同的自动补全插件,但一直收到相同的错误jquery.js:8103
帮助!
发布于 2012-03-21 03:06:31
信不信由你,是Google Chrome导致了这个问题。显然,它不喜欢本地主机ajax调用。以下是更新后的代码,可以正常工作:
services.js
$(function() {
$( "#service_employeeLast" ).autocomplete({
source: "/banner/fetch",
minLength: 2,
});
});services_controller
def employeeAutocomplete
@banner = employeeSearch(params[:term])
@banner_hash = []
@banner.each do |b|
@banner_hash << {
:title => b["POSITION_TITLE"],
:label => [b["FIRST_NAME"], b["LAST_NAME"]].join(" "),
:value => b["LAST_NAME"],
}
end
render :json => @banner_hash
end这里的键还表明您的返回值散列具有标签和值键/值对
发布于 2012-03-19 22:33:39
也许您使用render :json => @banner.to_json对数据进行了两次编码。它应该是render :json => @banner,数据将被自动编码。
https://stackoverflow.com/questions/9771724
复制相似问题