我正在运行Rails并尝试在我的文本字段中设置自动填充功能。我想提交一个控制器方法。如果我从我的表单提交(使用"提交"按钮),我想使用" format.html"科。如果我使用自动完成Ajax调用提交,我想使用" format.json"分支...
def search
if params.has_key?("s")
search = params[:s].strip
@people = Person.where("name ilike ?", "%#{search.upcase}%")
respond_to do |format|
format.html {
if @people.size == 1
redirect_to controller: 'votes', action: 'show', id: @people.first.id
end
}
format.json { @people.map(&:name) }
end
end
end
我在文本字段中设置了自动填充功能
$(function() {
return $('#s').autocomplete({
source: function(request, response) {
$.get('/people/search', { s: request.term }, function(data) {
alert(data)
response(data.split('\n'));
});
}
});
});
但正在发生的是"数据"是一个HTML页面,就像我通过format.html方法提交一样。如何配置,以便我的自动完成调用强制我从控制器呈现JSON响应?
答案 0 :(得分:1)
在网址中指定.json
格式,如下所示 -
$.get('/people/search.json', { s: request.term }, function(data) {
alert(data)
response(data.split('\n'));
});
发送原始json数据在Controller中更改。否则它将寻找模板来构建json(默认情况下rails会查找search.json.jbuilder)
format.json { render json: {people: @people.pluck(:name)} }