Rails kaminari 默认打开最后一页

cray · 2014年09月28日 · 最后由 realwol 回复于 2014年09月30日 · 1584 次阅读

假如有以下 2 个 model

class Tweet < ActiveRecord::Base
  belongs_to :user
end
class User < ActiveRecord::Base
  has_many :tweets
end

如果一个 user 有 1000 条 tweet,每 100 条是一页 kaminari 默认打开 user 页面后显示的是第一页的 tweets 现在想要打开 user 页面后默认显示第 10 页

现在的做法是在 user controller 里面判断 params[:page] 是否为空,如果是就让 params[:page] 变成 num_pages 但是问题是要在 lib 里面新加一个文件 lib/kaminari/helpers/tag.rb

module Kaminari
  module Helpers
    class Tag
      def params_for(page)
        page_params = Rack::Utils.parse_nested_query("#{@param_name}=#{page}")
        page_params = @params.with_indifferent_access.deep_merge(page_params)
      end
    end
  end
end

请问除了这个还有什么好的办法么?

一般的我做法是 order('id desc')

#1 楼 @zgm 想要用户看到最新的啊

page=@tweets.total_pages 这个参数默认直接传给 url,不可以么?

个人分析这个问题原因在于,kaminari 在首页的时候默认 params[:page] 是 nil,所以当你设定的时候如果强制设定 params[:page] 为 nil 时候到最后一页,那么你要跳转到第一页的时候就不行了。所以需求上如果想看到最新的,倒序是最直接解决方案。如果一定要打开某个,那么建议只在第一次打开时把参数改变一下。不过这样做有点猴子🍮的意思。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号