前提・実現したいこと
投稿記事を、いいねの多い順に表示するページを作成しています。
いいねの多い順にしてかつ、ページネーションを実装したいのですが、該当のページに遷移すると下記のようなエラーになってしまいます。
@all_ranksというインスタンス変数になぜメソッドが反映されないのかお聞きしたいです。
発生している問題・エラーメッセージ
NoMethodError in CafeteriasController#popular undefined method `include' for #<Array:0x00007ffd10f0c700> Did you mean? include?
該当のソースコード
記事を投稿するモデル(cafeteria)にcreate_all_ranksメソッドを定義
CafeteriaRB
1 def self.create_all_ranks 2 Cafeteria.find(Like.group(:cafeteria_id).order('count(cafeteria_id) desc').pluck(:cafeteria_id)) 3 end
コントローラーにページネーションを設定
CafeteriasController
1 def index 2 @user = current_user 3 @cafeterias = Cafeteria.includes(:user).order("created_at DESC").page(params[:page]).per(6) 4 end 5 6 def popular 7 @all_ranks = Cafeteria.create_all_ranks 8 @cafeterias = @all_ranks.includes(:user).page(params[:page]).per(6) 9 end 10(省略)
いいねランキングのビューの部分
PopularHtmlHaml
1%section.section 2 .cafeterias-container 3 .columns.is-multiline 4 - @all_ranks.each do |cafeteria| 5 = render partial: "cafeteria", locals: { cafeteria: cafeteria } 6 = paginate(@cafeterias)
アソシエーションはきちんて定義できています。
試したこと
補足情報(FW/ツールのバージョンなど)
rails 5.2.4.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/18 11:45
2020/05/18 11:49
2020/05/18 11:56
2020/05/18 13:16 編集
2020/05/18 13:22
2020/05/18 13:56
2020/05/18 14:02