2011-08-16 33 views
0

有一個應用程序應該顯示產品/經理列表。經過高低搜索後,我得到了答案,並發現我需要將一個參數表傳遞到包含該列表的控制器中。將參數傳遞到控制器 - 自動完成

def manager_list 
    list=User.all.map{|i|i.full_name} 
    arr= [].concat(list.sort{|a,b| a[0]<=>b[0]}).to_json 
    render :json =>arr 
    end 

的Javascript

$.ajax({ 
      url: "/managerlist", 
      dataType: "json", 
      data: { 
       style: "full", 
       maxRows: 12, 
       term: request.term 
      }, 
      success: function(data) { 
       var results = []; 
       $.each(data, function(i, item) { 
        var itemToAdd = { 
         value: item, 
         label: item 
        }; 
        results.push(itemToAdd); 
       }); 
       return response(results); 

我的紅寶石和JavaScript的知識不是最高的。但是我知道下面的列表= User.all.map。正在收集所有用戶full_name並連接它。我一直在嘗試幾個小時,就是弄清楚如何將var'term'作爲參數準確地傳遞給我的用戶控制器。因此,當我運行rails應用程序並搜索特定管理器或產品時,它將顯示單數記錄而不是整個列表。

回答

1

因爲您試圖實現自動完成功能,所以我認爲您會搜​​索以給定模式開頭的名稱。

控制器會是這個樣子:

def manager_list 
    matching_users = User.where(['full_name like ?', "#{params[:term]}%"]) 
    matching_names = [].concat(matching_users.map(&:full_name).sort{|a,b| a[0]<=> b[0]}).to_json 
    render :json => matching_names 
end 

此外,term: request.term不健全的權利我。我不確定,在哪裏從您的用戶界面獲取搜索字詞。請確認。

0

您是否在controller中使用manager_list方法?

這是你的控制器可能是什麼樣子:

class UserController < ActionController::Base 

    def manager_list 
    var term = params[:term] 
    ... // work with your parameter 
    end 
end 

如果只從這個送1分的結果......我將其重命名爲getManager代替的,因爲你不會得到一個列表。

如果term是用戶模型中的字段,則可以調用動態查找程序! 是這樣的:

User.find_by_term!(term) 

希望我回答你的問題!

Regards

相關問題