в алфавитном порядке страницы пользователей в рельсах - PullRequest
0 голосов
/ 26 марта 2012

Я пытаюсь создать алфавитную нумерацию для рельсов. Я нашел несколько плагинов и гемов, но они приводят к ошибкам, поэтому я пытаюсь создать пользовательскую нумерацию страниц, которая работает не совсем правильно ... ПОЧЕМУ это?

модель (userrrrrr.rb) def self.find_by_group ('A' .. 'Z'). Map do | буква | @users = User.find_by_sql (: все,: условия => ['LOWER (name) LIKE?', "# {letter.downcase}%"] ,: order => 'name ASC') конец @users конец

Помощник пользователя def Alphabetically_Paginate (коллекция) 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 Ответ

1 голос
/ 06 августа 2013

Это немного поздно для вечеринки, но это может помочь другим пользователям.Я создал гем, который допускает алфавитную нумерацию страниц, используя 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 %>

Надеюсь, это поможет.

...