2011-06-30 51 views
0

我想开发自动完成输入。JQuery的RoCom自动完成功能2.3.9

我有我的这个控制器操作:

def autocomplete_airports 
    render :json => WebService.get_airports(params[:airports_input]) 
end 

get_airports返回以逗号分隔的条目(,):

def self.get_airports(code) 
    #SOAP Action 
    begin response = @@client_airports_codes.request :tem, 'airports' do 
     soap.body = 
      { 
      "tem:prefixText" => code, 
      "tem:count" => @@airport_response_count 
     } 
     end 
    rescue Savon::SOAP::Fault => fault 
     puts fault.to_s 
    end 
    #preparing response 
    json = "" 
    response.to_hash[:airports_response][:airports_result][:string].each{ 
     |key| json = json + key.to_s + "," 
    } 
    return json 
    end 

笔者认为:

<form id="airport_form" class="center" action=""> 
    <label for="airports_input">Airport/City</label> 
    <br /> 
    <input type="text" name="airports_input" id="airports_input" /> 
</form> 

而且我的JavaScript :

$('#airports_input').autocomplete('/WebServices/autocomplete_airports'); 

但是,它不起作用。

我该怎么办?

谢谢!

+0

你可以发布'get_airports'方法代码吗? – Brian

+0

当然...看看我编辑的get_airports代码。 – content01

回答

0

我认为你需要返回一组键值对来完成这个工作。看@my answer到另一个最近的问题。

我会添加在这个问题的答案不包含在此相关的型号代码(注:Rails的3.0):

def self.search(search = nil) 
    if search 
    where('name LIKE ?', "%#{search}%") | tagged_with("%#{search}%") 
    else 
    scoped 
    end 
end 

def self.autocomplete(search) 
    results = search(search) 
    results.map! { |result| {:value => result.name} } 
end 

希望这有助于。