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