【问题标题】:alphabetically paginate users in rails在 Rails 中按字母顺序对用户进行分页
【发布时间】:2012-04-09 13:38:07
【问题描述】:

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

模型(userrrrr.rb) def self.find_by_group ('A'..'Z').map 做 |字母| @users = User.find_by_sql(:all, :conditions=>['LOWER(name) LIKE?', "#{letter.downcase}%"],:order=>'name ASC') 结尾 @用户 结束

用户助手 def alphabetically_paginate(集合) available_letters = User.find_by_group content_tag(:ul, 安全(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 等,例如搜索页面

【问题讨论】:

  • 你用什么宝石试过这个? will_paginate 可以毫无问题地做到这一点。另外,您遇到了哪些具体错误?什么版本的 Rails?您最初的查询是否给您期望的结果?简而言之 - 请提供更多详细信息。
  • 我尝试使用在 ruby​​gems.org 中找到的 alphabetically_paginate gem ...它。至于结果......我没有错误......它只是页面出现了不可点击的字母......它好像对sql的调用不起作用但它工作......我有rails 3.0和REE .. 不要提及尝试更新我的rails,因为目前这是不可能的。 rails 和 ruby​​ 太集成到我的其他代码中,我无法将其拆开并更新。
  • 你见过这个吗? stackoverflow.com/questions/554755/… 另外,我建议使用真正的 rails 查询而不是 find_by_sql。

标签: ruby-on-rails pagination alphabetical


【解决方案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 %>

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 2010-10-07
    • 1970-01-01
    • 2018-12-03
    • 2017-02-28
    • 2011-08-29
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多