前提
SQLで取得した結果に対してのページネーションが上手く機能しません。
GEMはKAMINARI をベースに下記を使用しております。
Ruby
1gem 'kaminari' #ページネーション 2gem 'bootstrap4-kaminari-views' 3 4gem 'activerecord-import' 5 6gem 'rails-i18n' # メッセージの日本語化 7 8gem 'rubyXL' # エクセルへの変換用 9 10gem 'devise' 11 12gem 'debug' #デバッグ
実現したいこと
・正常にページネーションを動作させたいだけです。
発生している問題・エラーメッセージ
そもそもページネーション用のバーが出てこない。
出てきたとしても全く機能しない。
該当のソースコード
master>prods_controller
RUBY
1require 'bundler/setup' 2 require 'activerecord-sqlserver-adapter' 3 4 ActiveRecord::Base.configurations = YAML.load_file('config/database.yml') 5 6 7 # GET /master/prods or /master/prods.json 8 def index 9 @title = "" 10 @master_prods = [] 11 con = ActiveRecord::Base.connection 12 13 @master_prods = con.select_all(" 14 SELECT 15 [RAC_PROD].[prod_code] 16 ,[RAC_PROD].[prod_name] 17 ,[RAC_PROD].[prod_short_name] 18 ,[RAC_PROD].[max_qt] 19 ,[RAC_PROD].[racmgt_flg] 20 ,[RAC_PROD].[id] 21 FROM 22 [ALINCO].[dbo].[RAC_PROD] WITH(NOLOCK) 23 ORDER BY 24 [RAC_PROD].[prod_code] 25 ,[RAC_PROD].[id] 26 ") 27 #問題の箇所 28 @master_prods = Kaminari.paginate_array(@master_prods, limit: 20, offset: 0, total_count: 1000) 29 @master_prods = Kaminari.paginate_array(@master_prods) 30 @master_prods = @master_prods.page(params[:page]) 31 if @master_prods.empty? 32 flash.now[MessageKind::INFORMATION] = flash_message("データが存在しません") 33 end 34 end 35
master>prods>index.html.erb
html.erb
1<p id="notice"><%= notice %></p> 2 3<%= render partial: "layouts/search_panel" , locals: {param: "master/prods/prod_param"} %> 4 5<div class="h4 pb-2 mb-4 text-info border-bottom border-info">商品マスタ 6</div> 7 8<%= link_to '作成', new_master_prod_path ,class: "btn btn-outline-success mb-4"%> 9<!--問題の箇所--> 10<p> 11<%= paginate @master_prods, theme: 'twitter-bootstrap-4' %> 12</p> 13 14<div class="table-responsive-lg"> 15<table class="table table-hover table-striped table-bordered table-sm" style= "width: 500px"> 16 <thead class="thead-dark text-center"> 17 <tr> 18 <th>商品コード</th> 19 <th>商品名</th> 20 <th>最大数</th> 21 <th>ラック管理</th> 22 </tr> 23 </thead> 24 25 <tbody> 26 <% @master_prods.each do |master_prod| %> 27 <!--<%= master_prod%>--> 28 <tr> 29 <td> 30 <%= link_to "#{master_prod["prod_code"]}",edit_master_prod_path(master_prod["id"]), calss: "text-primary", method: :get %> 31 </td> 32 <td> 33 <%=master_prod["prod_short_name"]%> 34 </td> 35 <td> 36 <%=master_prod["max_qt"].to_i%> 37 </td> 38 <td> 39 <%if master_prod["racmgt_flg"] == 0%> 40 <input type="checkbox" readonly="readonly" disabled="disabled"> 41 <%else%> 42 <input type="checkbox" checked readonly="readonly" disabled="disabled"> 43 <%end%> 44 </td> 45 </tr> 46 <% end %> 47 </tbody> 48</table> 49</div> 50 51<br> 52
試したこと
それぞれの行をコメントアウトしてみましたが、
ページネーションボタンが表示はされど、全く機能しない
(絞り込み/ページ送りが動かない)といった状況でした。
補足情報(FW/ツールのバージョンなど)
ruby 3.0.2
Rails 6.1.6
回答1件
あなたの回答
tips
プレビュー