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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

Q&A

解決済

1回答

478閲覧

SQLで取得したらレコードのページネーションが上手く機能しない

HisanoriSato

総合スコア67

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

0グッド

0クリップ

投稿2022/10/24 05:47

編集2022/10/24 05:49

前提

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

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

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

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

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

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

maisumakun

2022/10/24 06:15

ページネーションが出るだけのレコード件数はありますか?
HisanoriSato

2022/10/24 06:26

あります。Limit20に対して30件ほどあります。
guest

回答1

0

自己解決

controllerの記述を変更したら解決しました。

ruby

1@title = "" 2 @master_prods = [] 3 con = ActiveRecord::Base.connection 4 5 @master_prods = con.select_all(" 6 SELECT 7 [RAC_PROD].[prod_code] 8 ,[RAC_PROD].[prod_name] 9 ,[RAC_PROD].[prod_short_name] 10 ,[RAC_PROD].[max_qt] 11 ,[RAC_PROD].[racmgt_flg] 12 ,[RAC_PROD].[id] 13 FROM 14 [ALINCO].[dbo].[RAC_PROD] WITH(NOLOCK) 15 ORDER BY 16 [RAC_PROD].[prod_code] 17 ,[RAC_PROD].[id] 18 ") 19 20 #ページネーション用に配列データを変換 21 @master_prods = Kaminari.paginate_array(@master_prods, limit: 20, offset: 0, total_count: 99999) 22 #ページネーション用にデータを割り振り 23 @master_prods = Kaminari.paginate_array(@master_prods).page(params[:page]).per(10) 24 25 26#

投稿2022/10/24 07:12

HisanoriSato

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問