按字母顺序在rails中分页用户

时间:2012-03-26 01:18:51

标签: ruby-on-rails pagination alphabetical

我正在尝试为rails创建按字母顺序排列的分页。我发现了一些插件和宝石,但是它们出现了错误,所以我试图创建一个自定义分页,这种分页工作不正常......这是什么?

模型(userrrrrr.rb)     def self.find_by_group     ('A'..'Z')。map do | letter |       @users = User.find_by_sql(:all,:conditions => ['LOWER(name)LIKE?',“#{letter.downcase}%”],:order =>'name ASC')       结束       @users     端

用户帮助      def alphabetically_paginate(collection)       available_letters = User.find_by_group       content_tag(:ul,safe(alphabetical_links_to(available_letters)),                   :class => “分页”)      端

 def safe(content)
  if content.respond_to?(:html_safe)
    return content.html_safe
  end
  content
 end

 def alphabetical_links_to(available_letters)
    available_letters = ('A'..'Z').to_a
  ('A'..'Z').map do |letter|
    content_tag(:li, paginated_letter(available_letters, letter))
  end.join(" ")
 end

  def paginated_letter(available_letters, letter)
    if available_letters.include?(letter)
      link_to(letter, "#{request.path}?letter=#{letter}")
    else
      letter
    end
  end  
end

视图

-('A'..'Z').each do |char|
          -if char == user.name[0]
            = link_to :action => 'char'
  =alphabetically_paginate(@users)

视图不完整,因为我不知道如何继续进行...我正在考虑刷新页面并显示仅包含A或B等列表的列表

1 个答案:

答案 0 :(得分:1)

派对有点晚了,但它可能对其他用户有所帮助。我创建了一个gem,允许使用SQL查询按字母顺序分页:https://github.com/lingz/alphabetical_paginate

这很简单:

控制器

 def index
    @users, @alphaParams = User.all.alpha_paginate(params[:letter], {db_mode: true, db_field: "name"})
 end

视图

<%= alphabetical_paginate @alphaParams %>

希望它有所帮助。