1

私は現在、Rails 2 で作成した Reddit クローン アプリに取り組んでおり、Rails 3 の新機能を使用して高速化しようとしています。アプリは非常にシンプルで、Links の足場があり:url、、、、および。アプリは、送信されたすべてのリンクを表示し、新しいリンクも送信できる場所にルーティングします。:description:points:created_atlinks#submissions

paginate投稿ページにリンクを表示するときに、Rails 2のメソッドで問題が発生しました。私は現在 Rails 3.2.3 を実行しておりwill_paginate、Rails 3 で gem を使用する必要があることを理解しています (これは my.xml に含まれていますGemfile) が、プルアップしようとすると常に次のlocalhost:3000エラー メッセージが表示されます。

NoMethodError in LinksController#submissions...
undefined method paginate for #<LinksController:0x00000102ff5f98>

具体的には、Links コントローラの 90 行目です。

LinksController.rb (90 ~ 93 行目)の内容は次のとおりです。

@link_pages, @Links = paginate :links, :order => order, :per_page => 20
@header_text = case ordering
    when 'hot' then 'Top rated submissions'
when 'new' then 'Latest submissions'

これは Rails 3 で paginate を使用する正しい方法ではありませんか?

4

2 に答える 2

4

の場合will_paginate、コントローラーで次のようなものを使用する必要があります。

@links = Link.paginate(:page => params[:page], :per_page => 20)

@linksビューでは、特定のページのリンクがインスタンス変数に格納されます。そのコレクションを繰り返し処理して、リンクを表示できます。

(リンクの) 他のページへのリンクを表示するには、ビューのどこかでこれを使用します。

will_paginate @links

ここでさらにヘルプを見つけることができますwill_paginate: https://github.com/mislav/will_paginate

ただし、Rails 3 の場合はkaminariwill_paginate. Rails 3 スコープを使用します。

コントローラーでは次のようになります。

@links = Link.page(params[:page]).per(20)

そして、これはビューで:

paginate @links

詳細はkaminariこちら: https://github.com/amatsuda/kaminari

Ryan の Railscast もここで見ることができkaminariます: http://railscasts.com/episodes/254-pagination-with-kaminari

于 2012-06-09T01:28:47.383 に答える
1

モデルで paginate を呼び出す必要があるため、

Link.paginate :page => params[:page], :per_page => 20

また

Link.[arel query].paginate :page => params[:page], :per_page => 20

動作するはずです。

作成された降順の例で並べ替えるには、次のようにします。

Link.order("created_at DESC").paginate :page => params[:page], :per_page => 20
于 2012-06-09T01:24:07.410 に答える