我正在尝试创建一个AJAX过滤器以及一个AJAX分页功能。
最初,正如您所看到的,我对所有用户的所有“帖子”进行了分页。分页在这里完美运作。但是当我从下拉菜单中选择一个用户,以便页面只显示该特定用户的所有帖子时,分页神秘地禁用(插图显示我选择了用户“neilmarion”)。
我按照this教程对AJAXify我的分页功能进行了操作,效果很好。
以下是页面的视图代码(index.html.erb):
<script src="javascripts/a.js" type="text/javascript"></script>
<%= javascript_include_tag 'prototype' %>
<%= javascript_include_tag 'lowpro' %>
<%= javascript_include_tag 'application' %>
<h1>AJAXIFIED PAGINATION TEST (will_paginate gem)</h1>
<%= collection_select(:person,
:id,
@people, :id, :name,
{},
{:onChange => remote_function(:with => "'user_id='+value", :update => "search_results", :url =>{ :controller => :home, :action => :filter_posts_by_person } ) }) %>
<div id="search_results">
<%= render :partial => "search_results" %>
</div>
以下是用户从下拉菜单中选择时正在更新的部分内容(_search_results.html.erb)
<% width = 1000 %>
<% rheight = 50 %>
<% colsperrow = 2 %>
<% desuserperpage = 8.0 %>
<table border="0" width="<% width %>">
<% e = @posts.count %>
<% d = 0 %>
<% while d < (desuserperpage / colsperrow).ceil %>
<tr height="<%= rheight %>">
<% c = 0 %>
<% while c < colsperrow %>
<% if (d*colsperrow)+c >= @posts.count %>
<td width="<%= width/(2*colsperrow) %>">
</td>
<td width="<%= width/(2*colsperrow) %>">
</td>
<% else %>
<td width="<%= width/(2*colsperrow) %>" align="right">
<%= image_tag Person.find(@posts[(d*colsperrow)+c].person_id).avatar.url(:small) %>
</td>
<td width="<%= width/(2*colsperrow) %>" bgcolor="yellow">
<font face="arial" size="2">
<%= @posts[(d*colsperrow)+c].content %>
</font>
</td>
<% end %>
<% c+=1 %>
<% end %>
<% d+=1 %>
</tr>
<% end %>
</table>
<%= will_paginate @posts %>
以下是负责帖子分页和过滤的控制器(home_controller.rb):
class HomeController < ApplicationController
def index
@posts = Post.paginate(:per_page => 8, :page => params[:page], :order => 'updated_at')
@people = Person.find(:all)
respond_to do |format|
format.html # index.html.erb
format.js do
render :update do |page|
page.replace_html 'search_results', :partial => "search_results"
end
end
end
end
def filter_posts_by_person
@posts = Post.paginate(:conditions => ["posts.person_id = ?", params[:user_id]], :per_page => 8, :page => params[:page], :order => 'updated_at')
Rails.logger.debug params.inspect
render :partial => "search_results"
end
end
从上面的图片中可以看出,只要有一个ajax调用来过滤帖子,分页链接的网址就会改变。
我从下拉菜单中选择后,我真的不知道为什么分页不再起作用。
答案 0 :(得分:1)
跟随ryan bates关于分页的文章 http://railscasts.com/episodes/174-pagination-with-ajax 可能这应该可以帮到你