0

我正在使用jquery-ui自動完成與rails,但它無法正常工作。它不會匹配搜索結果,但它會顯示所有json結果(不帶過濾器)。自動完成jquery不匹配我的json

以我路由

get '/autocomplete-photos', to: 'photos#autocomplete' 

以我控制器

def autocomplete 
     @photos = Photo.all 
     respond_to do |format| 
     format.json { render json: @photos.as_json(only: [:title, :user, :description], methods: [:avatar_url, :user, :photo_url])} 
    end 
    end 

我認爲

<%= search_form_for @spot_search, url: search_path do |f| %> 
     <%= f.text_field :title_cont, id: "auto-search", :size => 15, :placeholder => "Encuentra spots..." %> 
     <button type="submit" class="collapsebutton searchbutton"> 
     <i class="icon-magnifier"></i></button> 
     <% end %> 
     </div> 
     </div> 

     <script> 
     $(document).ready(function(){ 
     $("#auto-search").autocomplete({ 
      source: "autocomplete-photos.json", 
      minLength: 2, 
      select: function(event, ui) { 
      $('#auto-search').val(ui.item.photo.title); 
      } 
     }).data("ui-autocomplete")._renderItem = function(ul, item) { 
       var inner_html = '<a href="' + item + '"><div class="list_item_container"><div class="image"><img class="avatar_small" src="' + item.photo_url + '"></div><div class="label">' + item.title + '</div><div class="description">' + item.description + '</div></div></a>'; 
       return $("<li></li>") 
        .data("item.autocomplete", item) 
        .append(inner_html) 
        .appendTo(ul); 
      }; 
     }); 
     </script> 

巴雖然它的工作原理很簡單,但是我沒有得到關於搜索結果的結果,但是我得到了所有的JSON。我錯過了什麼?

謝謝!

+0

你傳遞一個值給你的控制器,還是一個空字符串? (給你所有的結果而不是過濾結果) – wahwahwah

回答

0

好吧我通過在控制器中傳入參數這個術語來解決它。

def autocomplete 
     if params[:term] 
     @photos = Photo.find(:all,:conditions => ['title LIKE ?', "#{params[:term]}%"]) 
     else 
     @photos = Photo.all 
     end 
     respond_to do |format| 
     format.json { render json: @photos.as_json(only: [:title, :user, :description], methods: [:avatar_url, :user, :photo_url])} 
    end 
    end