私はRubyonRailsアプリケーションにKaminarigemを使用しています(will_paginateをまだ使用している人は、切り替えを検討することをお勧めします!はるかにクリーンで用途が広いです)。
私が抱えている問題は、AJAXページ付けを行うときにコントローラーアクションを指定したいということです。私のページ付けをリモートで機能させるには、次のようにします。
<%= paginate @feeds, :param_name => :page, :remote => true%>
デフォルトでは、:remote => trueを設定し、「pages」コントローラーのhome.js.erbファイルに次の行を追加すると、ホームページで機能します。参照するjsパーシャルを指定する必要はありません。自動的に選択します。
$('.synopsis').html('<%= escape_javascript render('exchanges/synopsis', :feeds => @feeds)%>');
$('.paginator').html('<%= escape_javascript(paginate(@feeds, :param_name => :page, :remote => true).to_s)%>')
しかし、問題は、この「synopsis」divが、アプリケーションのさまざまなページにレンダリングする部分的なものであるということです。そのため、コントローラーが私の「ページ」コントローラーではないページでは、リモートページネーションが機能しなくなります。
1つの解決策は、これら2行を多くの異なるコントローラーのjs.erbファイルに追加することです。しかし、それは冗長でエレガントではありません。
「paginate」呼び出しで、リモート呼び出しに使用するコントローラーとアクションを指定できるようにしたいと思います。次に、次のようなアクションを作成すると思います。
def paginate_remotely
respond_to paginate_remotely.js
end
どうすればこれを行うことができますか?とても簡単な質問のようですが、私はそれを理解することができませんでした。以下は確かに機能しません:
<%= paginate @feed_exchanges, :param_name => :exchange_page, :remote => true, :controller => :exchanges, :action => :paginate_remotely %>