2010-03-27 48 views
3

我正在使用will_paginate成功翻阅记录。我也通过jQuery使用AJAX实时搜索来更新我的结果div。到目前为止没有问题。我的问题是当试图通过这些实时搜索结果进行分页时。我只是得到“页面正在加载...”没有div更新。我错过了一些基本的东西?我相信我可能需要以某种方式通过jQuery绑定分页链接的单击事件。使用will_paginate和AJAX在Rails中使用jQuery进行实时搜索

# index.html.erb 

    <form id="searchform" accept-charset="utf-8" method="get" action="/search"> 
    Search: <input id="search" name="search" type="text" autocomplete="off" title="Search location, company, description..." />  
    <%= image_tag("spinner.gif", :id => "spinner", :style =>"display: none;") %> 
    </form> 

# JobsController#search 

def search 
    if params[:search].nil? 
     @jobs = Job.paginate :page => params[:page], :order => "created_at desc" 
    elsif params[:search] and request.xhr? 
     @jobs = Job.search params[:search], params[:page] 
    end 
    render :partial => "jobs", :layout => false, :locals => { :jobs => @jobs } 
    end 

# Job#search 

def self.search(search, page) 
    logger.debug "Job.paginate #{search}, #{page}" 
    paginate :per_page => @@per_page, :page => page, 
      :conditions => ["description LIKE ? or title LIKE ? or company LIKE ?", 
       "%#{search}%", "%#{search}%", "%#{search}%"], 
       :order => 'created_at DESC' 
    end 

# search.js 

$(document).ready(function(){ 

    $("#search").keyup(function() { 
    $("#spinner").show(); // show the spinner 
    var form = $(this).parents("form"); // grab the form wrapping the search bar. 
    var url = form.attr("action"); // grab the URL from the form's action value. 
    var formData = form.serialize(); // grab the data in the form 
    $.get(url, formData, function(html) { // perform an AJAX get, the trailing function is what happens on successful get. 
     $("#spinner").hide(); // hide the spinner 
     $("#jobs").html(html); // replace the "results" div with the result of action taken 
    }); 
    }); 

}); 
+0

而且,只是好奇,你为什么不具备的功能KEYUP延迟?通常,您希望实时搜索等到用户在运行get之前暂停几百毫秒,对吧? – 2010-04-09 23:15:59

回答

0

如果微调永远不会被隐藏,最有可能请求/search发生故障 - 检查你的log/development.log。它看起来像你可能想默认:page参数如果没有提供它:

page = params[:page] || 1