使用json输入+ rails3进行Jquery自动完成

时间:2011-09-28 12:40:03

标签: jquery ruby-on-rails ajax ruby-on-rails-3

$(function() {
  $('.autocomplete_address').autocomplete({
    minLength: 0,
    delay: 600,
    source: function(request, response) {
      $.ajax({
        url: "/welcome.js",
      dataType: "json",
      data: {search: request.search},
      success: function( data ) {
      var data_obj = jQuery.each(data,function(i, key) {
                     });
        response( $.map(data_obj, function( item ) {
          return {
            label: item.area,
            value: item.area
          }
        }));
      }


    });
      }

    });


});

使用jquery-ui-186 的自动填充功能

自动完成部分有效但是对于输入的任何数据显示相同的结果

在服务器端代码如下所示:

class WelcomeController < ApplicationController

  def index
    @area =  Address.search params[:search]
    @area =  @area.as_json(:include => :state)
    @area =  @area.to_json

    respond_to do |format|
      format.html
      format.js {render :json => @area}
    end
  end

end

我哪里错了!!!!!! 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

request对象具有term属性,而不是search属性。更新您的AJAX电话:

/*Snip */
data: { search: request.term },
/*Snip */

答案 1 :(得分:0)

更新:来自文档:

                success: function( data ) {
                    response( $.map( data.geonames, function( item ) {
                        return {
                            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                            value: item.name
                        }
                    }));
                }

所以你的看起来可能是这样的:

 success: function( data ) {
                    response( $.map(data_obj, function( item ) {
                       return {
                          label: item.area,
                          value: item.area
                       }
                 });
    }

看起来你实际上并没有对.each()的结果做任何事情。