0

改ページにはRails3.2とKaminariを使用しています。特定のユーザーのすべての記事とすべての記事をレンダリングするために、同じコントローラーアクション(インデックス)を使用しています。私のコントローラーコードは次のようになります。

  def index
    @articles = (params[:mine] == "true") ? current_user.articles : Article.search(params[:search], :page => params[:page])

    respond_to do |format|
      format.html
      format.json { render json: @articles }
    end
  end

そして私の記事モデルでは:

  def self.search(search, opts)
    if search.present?
      where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%").page(opts[:page]).per(25)
    else
      page(opts[:page]).per(25)
    end
  end

私の問題は、current_userの記事を表示するときに並べ替えとページ付けを適用する方法がわからないことです。ちなみに、ソートのコードはまだありません。現在のコードでは、mineパラメータをtrueに設定してインデックスアクションにアクセスすると、「#Articleの未定義のメソッド`current_page'」というエラーが発生します。

だから私の質問は、使用するときにどのようにソートとページ付けを適用するのcurrent_user.articlesですか?サンプルコードは本当に役に立ちます。どうもありがとう!

4

1 に答える 1

1

クラスメソッドをスコープに置き換える必要があると思います:

scope :search, lambda {|search, opts|
  if search.present?
    where("category LIKE ? OR article_type LIKE ?", "%#{search}%","%#{search}%").page(opts[:page]).per(25)
  else
    page(opts[:page]).per(25)
  end
}

それで:

source    = (params[:mine] == "true") ? current_user.articles : Article
@articles = source.search(params[:search], :page => params[:page])
于 2012-08-27T09:37:42.850 に答える