我正在使用带有rails的jquery-ui自动完成功能,但它无法正常工作。它不会匹配我在搜索上的结果,但它会显示所有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 :(得分: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