2011-08-16 8 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という用語をパラメータとしてユーザーのコントローラに正確に渡す方法を考え出すことです。そのため、レールアプリを実行して特定のマネージャや製品を検索すると、リスト全体ではなく単なるレコードが表示されるようになります。

答えて

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は私に権利鳴りません。あなたのUIから検索用語を取得しているかどうかはわかりません。それを確認してください。

0

コントローラ内のmanager_listメソッドはありますか?あなたは文句を言わないリストを取得するので、私は、代わりにgetManager名前を変更します...あなたはこれだけで1件の検索結果を取得する必要がある場合は

class UserController < ActionController::Base 

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

:ここ

は、あなたのコントローラがどのようなものであるかです。

あなたのユーザーモデルにtermがある場合、動的検索が可能です!! このようなもの:

User.find_by_term!(term) 

私はあなたの質問に答えました!

よろしくお願いいたします。

関連する問題