0

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

model(userrrrrrr.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') end @users end

用户助手 def alphabetically_paginate(collection) available_letters = User.find_by_group content_tag(:ul, safe(alphabetical_links_to(available_letters)), :class => "pagination") end

 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 等列表,例如搜索页面

4

1 回答 1

1

这对聚会来说有点晚了,但它可能会帮助其他用户。我在这里创建了一个允许使用 SQL 查询进行字母分页的 gem: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 %>

希望能帮助到你。

于 2013-08-06T19:11:12.273 回答