0

レールのアルファベット順のページ付けを作成しようとしています。いくつかのプラグインとgemを見つけましたが、エラーが発生するため、正しく機能しないカスタムページネーションを作成しようとしています...これはなぜですか?

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

ユーザーヘルパーdefalphabetically_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 に答える