我想通过Ajax对Kaminari进行多次分页,现在这是我的控制器代码

def user_note
    @user = current_user
    @notes = Bookmark.where('user_id = ? && note is not NULL',current_user.id).order('created_at DESC').page(params[:page_1]).per(4)

    @bookmarks = Bookmark.where('user_id = ? && note is NULL',current_user.id).order('created_at DESC').page(params[:page_2]).per(4)

    respond_to do |format|
      format.html
      format.xml{ render :xml => @user}
    end   end


现在对于视图,我有两个部分来渲染此数组

<div id="bookmarks">
<%= render :partial =>"users/bookmark",:locals => { :bookmark => @bookmarks} %>
            </div>
<%= paginate @bookmarks,:remote => true, :param_name => 'page' %>


内部部分是

<% bookmark.each do |bookmar| %>
  <%= render :partial => 'show_bookmark.html.erb' , :locals => { :bookma => bookmar} %>
<%end%>


用于分页更新的脚本在单独的文件中处理

$('#bookmarks').html('<%= escape_javascript render(:partial =>"users/bookmark",:locals => { :bookmark => @bookmarks}) %>');
$('#paginator').html('<%= escape_javascript(paginate(@bookmarks, :remote => true).to_s) %>');


但是通过做所有事情,它不会更新到页面状态,页面中的包含也不会更新。

最佳答案

你错过了在这一行传递参数

$('#paginator').html('<%= escape_javascript(paginate(@bookmarks, :remote => true).to_s) %>');


我认为应该是这样

$('#paginator').html('<%= escape_javascript(paginate(@bookmarks, :remote => true, :param_name => 'page_2').to_s) %>');


而且您在此行传递了错误的参数

<%= paginate @bookmarks,:remote => true, :param_name => 'page' %>


应该是这样

<%= paginate @bookmarks,:remote => true, :param_name => 'page_2' %>


并请检查您是否将响应正确发送到JS文件。

关于ajax - 通过Ajax与kaminari进行多次分页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9016943/

10-11 02:54
查看更多