【问题标题】:rails ajax pagination with partials带有部分的rails ajax分页
【发布时间】:2012-01-16 10:07:15
【问题描述】:

我正在使用 will paginate gem 进行分页。对我来说一切都很好。我正在尝试对其进行 ajaxify 处理,并按照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;
    }
  );
});

谢谢, 拉姆亚。

【问题讨论】:

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


    【解决方案1】:

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

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

    类似:Best way to get will_paginate working with Ajax

    【讨论】:

    • 嗨 Syed,我在 rails 日志中看到了这个错误 [2012-01-16 14:25:35] ERROR bad URI `/%22/javascripts/pages/ic.js?1326703901\ "'。在 IE GUI 中,完整的东西包含在 execption 中并打印出来。try { Element.replace("listing", "\n \n \n All:\n Expand\n /\n Collapse\n \n \n 选中\n /\n 取消选中\n \n
    【解决方案2】:

    这可能与您使用 HAML 视图和 js.erb 文件这一事实有关,但我不使用 HAML,所以我不能确定。看看 nex3 在这个 SO 上的回答: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      相关资源
      最近更新 更多