5

WillPaginatepage_entries_infoには、 「合計 4825 件中 1 ~ 35 件の契約を表示しています」のようなテキストを出力するビュー ヘルパーがあります。

しかし、このように使用しようとすると、私はそれを見つけています...

= page_entries_info @contracts

それは出力します...

合計 4825 件中 1 件から 35 件までを表示

(複数形ではなく、モデルの単数形の名前をすべて小文字で出力します。)

他のパラメーターを与える必要がありますか?

試しpage_entries_info @contracts, :model => Contractましたが同じ結果になりました。

私はバージョン 3.0.3 を使用しています -- 現在のバージョンです。

ちなみに、WillPaginate の API ドキュメントを教えてもらえますか?

4

1 に答える 1

4

will_paginate API ドキュメント: https://github.com/mislav/will_paginate/wiki/API-documentation

簡潔な答え

モデル オプションを文字列として指定すると、正しく複数形になります。

page_entries_info @contracts, :model => 'contract'
# Displaying contracts 1 - 35 of 4825 in total

より長い答え

will_paginate ドキュメントは、出力をカスタマイズするために i18n メカニズムを使用することを提案してます。AFAICT ファイル内のすべてのモデルの単数形と複数形config/locales/*.yml(en.yml など) を書き出す必要があり、-style%{foo}構文は ERB ではなく単なるプレースホルダーのように見えるため、これは一種の苦痛です。のようなことはできません%{foo.downcase}

独自のヘルパーを作成すると、出力を完全に制御できます。例えば:

def my_page_info(collection)
  model_class = collection.first.class
  if model_class.respond_to? :model_name
    model = model_class.model_name.human.downcase
    models = model.pluralize
    if collection.total_entries == 0
      "No #{models} found."
    elsif collection.total_entries == 1
      "Found one #{model}."
    elsif collection.total_pages == 1
      "Displaying all #{collection.total_entries} #{models}"
    else
      "Displaying #{models} #{collection.offset + 1} " +
      "to #{collection.offset + collection.length} " +
      "of #{number_with_delimiter collection.total_entries} in total"
    end
  end
end

# Displaying contracts 1 - 35 of 4,825 in total
于 2014-05-12T13:41:11.707 に答える