-1

Railsアプリケーションでwill_paginateを使用しましたが、ページネーション番号をクリックしてもページがリロードされないブロック内でwill_paginateを使用する必要がある状況に遭遇しました。ページのリロード……?

4

2 に答える 2

2

ページネーションJavaScriptファイルがあります

だから私の index.html.erb ファイルに追加しました

<%=javascript_include_tag "pagination.js"%>

pagination.js ファイル内

$(function(){
    $(".pagination a").live("click", function() {
        $.get(this.href, null, null, "script");
        return false;
    });
});

index アクションでこのようなモデル データを取得しました。

@employees = Employee.where("!is_deleted=?",1).paginate(:page=>params[:page] ,:per_page => 20)

これをindex.js.erbファイルに追加しました

$("#employee_table").html("<%= escape_javascript(render("employees")) %>");

ここで、employee_table は、データを表示する div の ID です。

config/initializers に will_paginate_array_fix.rb というファイル名があります。
このファイルは次のようになります

require 'will_paginate/array'

それが、配列もサポートしているため、機能する場所を使用しているにもかかわらずです。

于 2012-10-31T06:26:34.980 に答える
1

これが私が物事を設定する方法です:

Item私がモデルを持っているとしましょう。

最初にインデックス ビューで、ページネーションが実行されるパーシャルをレンダリングします。

<div id="list">
 <%= render 'items/paginate_list', :items => @items %>
</div>

will_paginateパーシャルでは、ステートメントに css クラスを追加します。

items/_paginate_list.html.erb
<%=  will_paginate items,  :param_name => :page, :class => 'my_pagination' %>
# code displaying each item...

my_pagination次に、application.js で、クラスのリンクをクリックするイベントをキャッチしました。

$(document).ready(function(){
  $('.my_pagination a').live("click",function(){
    $('.my_pagination').html('Page is loading, please wait...');
    $.get(this.href, null, null, 'script');
    return false;
  });
});

$.getこのようにして、ステートメントを介してajaxでコントローラーへの呼び出しが実行されます。ページネーション バーには、ページが読み込まれているというメッセージが表示されます。

コントローラーでは、いつものようにしています:

class ItemsController < ApplicationController
  def index
    @items=Item.paginate(:page => params[:page], :per_page => 10)
  end
end

最後に、埋め込まれた js で、リロードされるページネーションでパーシャルをフィードします。

items/index.js.erb
$("#list").html("<%= escape_javascript(render 'items/paginate_list', :items => @items) %>");

この助けを願っています。

実際、それは大まかにRailscastの簡単な要約です;-)

于 2012-10-29T14:39:24.443 に答える