标签: kaminari

与kaminari反向分页

我想为消息传递系统创建分页,其中显示的第一个页面包含最旧的消息,后续页面显示较新的消息.

例如,如果{a,b,c,d,e,f,g,h,i}每页3页的正常分页是:

{a,b,c}, {d,e,f}, {g,h,i}
Run Code Online (Sandbox Code Playgroud)

然后反向分页将是:

{g,h,i}, {d,e,f}, {a,b,c}
Run Code Online (Sandbox Code Playgroud)

我计划在页面前面添加结果与正常分页相同,只从最后一页开始.

这有可能kaminari吗?

pagination ruby-on-rails-3 kaminari

15
推荐指数
1
解决办法
1644
查看次数

通过Ajax与kaminari进行多重分页

我想通过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
Run Code Online (Sandbox Code Playgroud)

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

<div id="bookmarks">
<%= render :partial =>"users/bookmark",:locals => { :bookmark => @bookmarks} %>
            </div>
<%= paginate @bookmarks,:remote => true, :param_name => 'page' %>
Run Code Online (Sandbox Code Playgroud)

内部的部分是

<% bookmark.each do |bookmar| %>
  <%= render :partial => 'show_bookmark.html.erb' , :locals => { :bookma => bookmar} %> …
Run Code Online (Sandbox Code Playgroud)

ajax pagination ruby-on-rails-3 kaminari

14
推荐指数
2
解决办法
7941
查看次数

如何对Rabl的藏品进行分页

我有这个模板:

# app/views/posts/index.rabl
collection @posts => :posts
attributes :id, :title, :subject
child(:user) { attributes :full_name }
node(:read) { |post| post.read_by?(@user) }
Run Code Online (Sandbox Code Playgroud)

女巫回归:

{
    "posts": [
        {
            "post": {
                "id": 5,
                "title": "...",
                "subject": "...",
                "user": {
                    "full_name": "..."
                },
                "read": true
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想添加一些分页参数来呈现这个:

{
    "posts": [
        {
            "post": {
                "id": 5,
                "title": "...",
                "subject": "...",
                "user": {
                    "full_name": "..."
                },
                "read": true
            }
        }
    ],
    "total": 42,
    "total_pages": 12
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?非常感谢!

ruby-on-rails will-paginate kaminari rabl

12
推荐指数
1
解决办法
3695
查看次数

将不需要的表单参数附加到分页链接

我有一个页面,用于通过使用提供的表单提交数据来搜索列表.表单参数通过ajax(post request)提交,在搜索表中创建一个新记录,然后通过show此记录的操作显示(动态地,在表单提交的同一页面上).

结果有kaminari提供的分页链接,如下所示:

<%= paginate matches, 
  :params => {:controller => 'searches',
  # I have to specify the id because my searches are stored in the database
  :action => 'show', :id => search.id},
  :remote => true %>
Run Code Online (Sandbox Code Playgroud)

请注意,分页链接会动态包含在页面中.因此,当我进行新搜索并获取新列表时,服务器会重新呈现分页链接.

这是我在搜索控制器中的show动作

def show
  @search = Search.includes(:rate).find(params[:id])
  @matches = @search.matches.order(sort_column + " " + sort_direction).page(params[:page])

  respond_to do |format|
    format.html
    format.xml { render :xml => @matches }
    format.js
  end
end
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我无法弄清楚,我在搜索表单中使用的所有参数(以及其中有很多)都被附加到kaminari分页网址,给我这样的href:

<a href="/searches/145?massive parameter list omitted" data-remote="true" rel="next">2</a>
Run Code Online (Sandbox Code Playgroud)

省略的参数列表太长,以至于它太大而无法成为有效的GET请求,我得到一个414错误代码.

正如您从上面的搜索 - …

ruby pagination ruby-on-rails-3 kaminari

11
推荐指数
2
解决办法
3873
查看次数

如何强制Kaminari始终包含页面参数?

如果Kaminari的URL生成链接返回第一页,则会忽略页面参数.但是,如果省略页面参数,则应用程序旨在选择随机页面.因此,Kaminari的默认行为会阻止以可靠的方式返回第一页.

我已经解决了这个问题,稍后会发布我的解决方案,但我想发布这个问题给后人,我也是Rails的新手,因此我不确定我的解决方案是最好的还是最好的优雅,我对改进和改进感兴趣,如果只是为了我自己的自私教育!

ruby pagination ruby-on-rails-3 kaminari

10
推荐指数
3
解决办法
4545
查看次数

具有固定页面链接计数的Kaminari分页控制

我希望Kaminari能够通过分页控制显示固定计数的分页链接,例如每个导航页面上的10个链接.Kaminari默认在第一页显示6个页面链接,当您继续浏览时页面链接会继续增长,直到您达到9个项目.

我在这里显示,当我第一次加载时,它将总共有5个链接.

在此输入图像描述

当我继续浏览时,它会增长.

在此输入图像描述

在您浏览第5个链接之前,它仅显示9个链接.

在此输入图像描述

即使在使用Kaminari导航的开头或结尾,我如何始终保持链接数为10.我尝试过Kaminari config.window,但这不是我想要的.

ruby-on-rails kaminari

9
推荐指数
1
解决办法
1684
查看次数

活动管理员中面板的分页

我正在使用管理面板的活动管理员.在用户秀页面上,我需要向朋友们展示.我有两个模型User和Friend.

所以问题是我想在"与面板的友谊"中添加分页,即user.friends阻止.

有人可以帮我在一个面板上添加分页吗?这是我正在使用的代码.

show do
  attributes_table  do
    row("Photo") { |user| image_tag(user.facebook_photo_url) }
    rows :name, :sex,:city
  end

  panel 'Friendship with' do
    table_for user.friends do
      column "" do |friend|
        (link_to image_tag(friend.facebook_photo_url('small')), admin_friend_path(friend)) + " &nbsp; &nbsp; &nbsp; ".html_safe +  (link_to friend.name, admin_user_path(friend))
      end

    end
  end  

  active_admin_comments
end
Run Code Online (Sandbox Code Playgroud)

PS:朋友模特实际上是Facebook的朋友,所以我不能在用户模型上使用自我refrential连接(所以不要说使用一个模型而不是两个)我在同一页面上有一些其他面板.我需要确保每个小组都有自己的分页参数名称,这样它们就不会相互冲突.

pagination kaminari activeadmin

9
推荐指数
1
解决办法
5314
查看次数

kaminari undefined方法`total_pages'

我用kaminari,并且错误.

的Gemfile:

# gem 'will_paginate', '~> 3.0.6'
# gem 'will_paginate-bootstrap'

gem 'kaminari'
Run Code Online (Sandbox Code Playgroud)

lists_controller.rb

  def index
    if params[:tag]
      @lists = List.tagged_with(params[:tag]).order(created_at: :desc).paginate(page:params[:page], per_page: 3 )
    else
      @lists = List.all.order(created_at: :desc)
    end
  end
Run Code Online (Sandbox Code Playgroud)

我也是用户.page params[:page].per(2)关注.order(created_at: :desc) 但不工作

视图/列表/ index.html.erb

<%= paginate @lists %>
Run Code Online (Sandbox Code Playgroud)

错误在这里

undefined method `total_pages' for #<List::ActiveRecord_Relation:0x007fa2303e3fa8>
Extracted source (around line #26):             
    </div>
  </div>
<%= paginate @lists %>
  <div class="container"> 
    <div class="row">
      <div class="col-md-8">
Run Code Online (Sandbox Code Playgroud)

我不知道怎么做,我复制关于kaminari的railscast,视频很好,我有一个bug.谢谢,帮助我.

ruby ruby-on-rails kaminari

9
推荐指数
1
解决办法
1万
查看次数

Kaminari(或任何分页)在加入查询时很慢

我正在使用Kaminari对以下查询进行分页(尽管我使用will_paginate获得了类似的结果):

Person.joins([:locations=>:location_hour], :friends, :current_images).where(sql_conditions_string).page(params[:page]).per(10)
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作,但分页添加数据库调用

SELECT COUNT(*) FROM 'people' INNER JOIN 'location_histories'...
Run Code Online (Sandbox Code Playgroud)

它在整个查询中调用count(*).这需要1.3秒,而原始查询(包括完全相同的连接和.where条件)仅需约0.5秒.

有没有办法让分页只使用原始查询中的计数?最后一次数据库调用是一个很大的性能问题.

我在Rails 3.0.7上.

谢谢!

performance pagination join will-paginate kaminari

7
推荐指数
0
解决办法
888
查看次数

太阳黑子与kaminari分页

我最近决定将我的索引引擎从sphinx移植到solr.使用kaminari和thinking_sphinx我决定尝试在太阳黑子中使用通用分页https://github.com/sunspot/sunspot/pull/64/https://github.com/sunspot/sunspot/pull/67,按顺序使用避免移动到will_paginate.

我的搜索处理如下:

@search = Address.search do
  fulltext params[:search]
  with(:updated_at).greater_than(1.week.ago)
  order_by :updated_at, :desc
  paginate :page => params[:page], :per_page => 7
end
Run Code Online (Sandbox Code Playgroud)

我的观点与使用thinking_sphinx时的观点相同:

<%= render :partial => 'address' %>
<%= paginate @addresses %>
Run Code Online (Sandbox Code Playgroud)

我的问题是,在更改后,我在尝试执行搜索时不断收到以下错误:

undefined method `current_page' for []:Array
Run Code Online (Sandbox Code Playgroud)

我正在使用最新版本的太阳黑子,据我所知应该让我使用kaminari:

Using sunspot (1.3.0.rc3) from git://github.com/sunspot/sunspot.git (at master) 
Using sunspot_rails (1.3.0.rc3) from git://github.com/sunspot/sunspot.git (at master) 
Run Code Online (Sandbox Code Playgroud)

这与我的旧think_sphinx设置完美配合,所以我做错了什么?

ruby-on-rails sunspot kaminari

7
推荐指数
1
解决办法
3757
查看次数