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?):
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 22:23