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数据修改为我想要的那种。

+0

你能告诉我们您的ERB文件?如果我记得很清楚,有一个称为自动完成的div,当自动完成获取响应时会出现。你必须写一个小的erb.html来处理你的控制器的响应。我一年前做了同样的事情......但我现在无法访问我的代码... – Cygnusx1

+0

感谢您的信息,我刚刚更新了我的question.new问题刚刚出来。 – castiel

在成功的功能,你需要返回类似

.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散列中的值。最后一个参数为任何额外的选项,它可以在这里找到:

https://github.com/crowdint/rails3-jquery-autocomplete/blob/master/lib/rails3-jquery-autocomplete/autocomplete.rb