rails ajax与partials分页

时间:2012-01-16 10:07:16

标签: ruby-on-rails ajax will-paginate

我正在使用will paginate gem进行分页。事情对我来说很好。我正在努力解决这个问题,并且我遵循了http://railscasts.com/episodes/240-search-sort-paginate-with-ajax教程。但Ajax请求并没有被我解雇。

我有索引视图。该视图呈现一个名为“_browser_form”的部分,后者又呈现一个名为“_listing”的部分。所以我想在_listing中对表进行分页。 如果我的方法有任何错误,请告诉我。

我的控制器:

def index

         @ics = Ic.search(params[:root_name],params[:suite_name],params[:case_name],params[:name],'f').paginate(:per_page =>5, :page => params[:all_ics])
         respond_to do |format|
          format.html # index.html.erb
          format.xml  { render :xml => @ics }
        end
      end

我的_browser_form.html.haml,它是从index.html.haml

呈现的
- form_tag "/ics/mass_action", :method => :post, :multipart => true do
  <div id="update_ics_table">
  = render "listing", :show_check_boxes => show_check_boxes, :root_name=>params[:root_name],:suite_name=>params[:suite_name],:case_name=>params[:case_name],:name=>params[:name],:ic_filter=>1
  </div>
   =will_paginate @ics,:param_name=>:all_ics

我的index.js.erb文件:

$('#update_ics_table').html("<%= escape_javascript(render :partial => 'listing' ,:object => @ics) %>")

我的.js文件:

$(function () {
  $('#update_ics_table .pagination a').live('click',
    function () {
      $.getScript(this.href);
      return false;
    }
  );
});

谢谢, 拉姆亚。

2 个答案:

答案 0 :(得分:1)

删除您在Javascript中执行的操作并在控制器中执行此操作:

format.js {
  render :update do |page|
    page.replace 'listing', :partial => 'listing'
  end
}

类似:Best way to get will_paginate working with Ajax

答案 1 :(得分:0)

这可能与您使用HAML视图和js.erb文件这一事实有关,但我不使用HAML,因此我无法确定。在这个SO上看看nex3的答案:How to send back js.haml in rails

如果不是这种情况,我认为您需要将您的respond_to控制器操作块更改为:

respond_to do |format|
          format.html # index.html.erb
          format.xml  { render :xml => @ics }
          format.js #<------ This will execute index.js.erb
end