質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

978閲覧

will_paginateを使うには変数名は限定されるのでしょうか?

pecchan

総合スコア555

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/06/22 08:22

編集2020/06/22 08:30

rails 5.2です。

paginateの結果を受ける変数の「変数名」を変更すると何故か結果が取得できず、nilエラーになります。
変更はコントローラ側と、ビュー側で揃えてます。

以下のように@reqsを@hogeに変更するとエラーになります。

変更前のコントローラ

ruby

1 def index 2 3 @reqs = Req.paginate(page: params[:page]).where(from_user_id: current_user) 4 5 end

変更前のビュー側

ruby

1 2<ul class="nav nav-tabs"> 3 <li class="active"><a href="#send_reqs" data-toggle="tab">送ったリクエスト</a></li> 4 <li><a href="#get-reqs" data-toggle="tab">もらったリクエスト</a></li> 5 6</ul> 7<div class="tab-content"> 8 <div class="tab-pane active" id="send_reqs"> 9 <%= will_paginate %> 10 <% @reqs.each do |req| %> 11 <ul> 12 <li><%= link_to req.created_at, req_path(req) %> <%=req.to_user.name %>さんへリクエスト送信 <%=req.from_message %></li> 13   </ul> 14 <% end %> 15 <%= will_paginate %> 16 </div> 17 18 19</div>

変更後のコントローラ
@hogeに変更

ruby

1 def index 2 3 @hoge= Req.paginate(page: params[:page]).where(from_user_id: current_user) 4 5 end

変更前のビュー側
@hogeに変更

ruby

1<ul class="nav nav-tabs"> 2 <li class="active"><a href="#send_reqs" data-toggle="tab">送ったリクエスト</a></li> 3 <li><a href="#get-reqs" data-toggle="tab">もらったリクエスト</a></li> 4 5</ul> 6<div class="tab-content"> 7 <div class="tab-pane active" id="send_reqs"> 8 <%= will_paginate %> 9 <% @hoge.each do |req| %> 10 <ul> 11 <li><%= link_to req.created_at, req_path(req) %> <%=req.to_user.name %>さんへリクエスト送信 <%=req.from_message %></li> 12   </ul> 13 <% end %> 14 <%= will_paginate %> 15 </div> 16 17 18</div>

エラー内容
イメージ説明

@reqsだとエラーになりませんが、なぜでしょうか?

追記
ログを見ると、変数名を変更時はSQLが発行されていません。
なのでnilが返ってきてるようです。

ActionView::Template::Error (The @reqs variable appears to be empty. Did you forget to pass the collection object for will_paginate?):

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

日本語のブログなどを見て、期待通りの結果にならない場合は、公式ドキュメントを見たほうが解決しやすいと思います。

検索しただけですが・・・
下記で解決しそうな気がするのですがいかがでしょうか?

Ruby

1## render page links in the view: 2<%= will_paginate @posts %> # ⇐ 今回の場合は@postsを@hogeにする。

参考:https://github.com/mislav/will_paginate#basic-will_paginate-use

投稿2020/06/22 13:54

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pecchan

2020/06/22 22:23

有難う御座います。 仰るとおりでした。 公式ドキュメント見ることを忘れてました・・・・。反省です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問