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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

2169閲覧

無限スクロール実装時にブラウザの更新ボタンを押した場合に表示を初期状態にする

lyzmfeqpxs54

総合スコア237

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/04/13 03:43

編集2020/04/14 05:21

いつもお世話になっております。
現在RailsでWebページを作成しております。

kaminari + jscrollで無限スクロールを実現しており、下までスクロールされると次の部分が次々によまれていくような形になっております(twitterのようなイメージ)。

初期状態ではユーザーの情報が、10件表示されており、一番下から5%の位置までスクロールされると、次の10件分が表示されていく仕様となっています。

例えば下にスクロールしていき、50件を表示している状態で、ブラウザの更新ボタンを押すと、一瞬一番上へ移動するのですが、その後すぐ更新前の位置に戻ってしまうのですが、これを初期の10件分表示に戻したいと考えています(これもtwitterのようなイメージです)。

現状以下のように、リロード時に一番上に戻るjavascriptを実装している状態です。

こういった制御はどのようにすればよいのでしょうか。

調べ方が悪いとは思うのですが、ググっても分からずこちらに質問させていただきました。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。

環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.6.1

ruby

1 2 # users_controller.rb 3 4 def show 5 @users = User.all.page(params[:page]).per(10).order(id: "DESC") 6 render 'administrator_users/show' 7 end 8

ruby

1 # show.html.erb 2 3 <ul class="skill-list jscroll"> 4 <% @users.each do |user| %> 5 <ul class="content"> 6 <li class="content_right"> 7 <div class="status"> 8 <dl><dt>xxx</dt><dd><%= user.xxxx %></dd></dl> 9 <dl><dt>yyy</dt><dd><%= user.yyy %></dd></dl> 10 <dl><dt>zzz</dt><dd><%= user.zzz %></dd></dl> 11 <div class="status_more"> 12 <dl><dt>aaa</dt><dd><%= user.aaa %></dd></dl> 13 <dl><dt>bbb</dt><dd><%= user.bbb %></dd></dl> 14 <dl><dt>ccc</dt><dd><%= user.ccc %></dd></dl> 15 <dl><dt>ddd</dt><dd><%= user.ddd %></dd></dl> 16 <dl><dt>eee</dt><dd><%= user.eee %></dd></dl> 17 </div> 18 <a href="/" class="bt_more"><span>表示する</span></a> 19 </div> 20 </li> 21 </ul><!-- /.content --> 22 <% end %> 23 <%= paginate @users %> 24 </ul><!-- /.skill-list .jscroll -->

javascript

1 // 下までスクロールされたら次のページを読み込む 2 $(window).on('scroll', function() { 3 scrollHeight = $(document).height(); 4 scrollPosition = $(window).height() + $(window).scrollTop(); 5 if ( (scrollHeight - scrollPosition) / scrollHeight <= 0.05) { 6 $('.jscroll').jscroll({ 7 autoTrigger: true, 8 padding: 20, 9 contentSelector: '.skill-list', 10 nextSelector: 'span.next:last a', 11 callback: function() { 12 $(this).find(".bt_more").prevAll('.status_more').hide(); 13 }); 14 } 15 16 }); 17 18 // ページ読み込み後一番上へ移動する 19 $(document).ready(function(){ 20 $('html,body').animate({ scrollTop: 0 }, '1'); 21 });

ruby

1 2# Gemfile 3 4source 'https://rubygems.org' 5git_source(:github) { |repo| "https://github.com/#{repo}.git" } 6 7ruby '2.6.1' 8 9# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 10gem 'rails', '~> 5.2.4', '>= 5.2.4.1' 11# Use mysql as the database for Active Record 12gem 'mysql2', '>= 0.4.4', '< 0.6.0' 13# Use Puma as the app server 14gem 'puma', '~> 3.11' 15# Use SCSS for stylesheets 16gem 'sass-rails', '~> 5.0' 17# Use Uglifier as compressor for JavaScript assets 18gem 'uglifier', '>= 1.3.0' 19# See https://github.com/rails/execjs#readme for more supported runtimes 20# gem 'mini_racer', platforms: :ruby 21 22# Use CoffeeScript for .coffee assets and views 23gem 'coffee-rails', '~> 4.2' 24# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 25#gem 'turbolinks', '~> 5' 26# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 27gem 'jbuilder', '~> 2.5' 28# Use Redis adapter to run Action Cable in production 29# gem 'redis', '~> 4.0' 30# Use ActiveModel has_secure_password 31gem 'bcrypt', '~> 3.1.7' 32 33# ページング用Gem 34gem 'kaminari', '~> 0.17.0' 35# jquery用 36gem "jquery-rails" 37 38gem 'pry-rails' 39gem 'pry-doc' 40gem 'pry-byebug' 41gem 'pry-stack_explorer' 42 43# OGP対応 44gem "opengraph_parser" 45 46# S3対応 47gem 'aws-sdk-s3' 48gem 'aws-ses', '~> 0.6' 49gem 'carrierwave' 50gem 'fog-aws' 51 52# minimagic 53gem 'mini_magick' 54 55# 通知 56gem 'snackbarjs-rails' 57 58# cron 59gem 'whenever' 60 61 62 63# Reduces boot times through caching; required in config/boot.rb 64gem 'bootsnap', '>= 1.1.0', require: false 65 66group :development, :test do 67 # Call 'byebug' anywhere in the code to stop execution and get a debugger console 68 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 69end 70 71group :development do 72 # Access an interactive console on exception pages or by calling 'console' anywhere in the code. 73 gem 'web-console', '>= 3.3.0' 74 gem 'listen', '>= 3.0.5', '< 3.2' 75 # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 76 gem 'spring' 77 gem 'spring-watcher-listen', '~> 2.0.0' 78end 79 80group :test do 81 # Adds support for Capybara system testing and selenium driver 82 gem 'capybara', '>= 2.15' 83 gem 'selenium-webdriver' 84 # Easy installation and use of chromedriver to run system tests with Chrome 85 gem 'chromedriver-helper' 86end 87 88# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 89gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 90

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

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

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

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

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

no1knows

2020/04/13 06:03

gemの一覧はどのようになっているでしょうか?
lyzmfeqpxs54

2020/04/13 06:19

Gemfileの一覧を追記しました。 turbolinksは切ってある状況です。
guest

回答1

0

Turbolinksの影響かと思ったのですが、利用していないのですね。
jQueryの読み込みタイミングを遅らせるとどうなるでしょうか?

JavaScript

1$(window).load(function(){ 2 //処理 3});

https://qiita.com/katsunory/items/3ba4683629333b94b2be

投稿2020/04/13 15:09

no1knows

総合スコア3365

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

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

lyzmfeqpxs54

2020/04/14 02:45

ご回答ありがとうございます。 ご教示いただいた方法で試したのですが、その場でロードしてしまう状況は変わりません。 twitterなどはどのようにやっているのかが気になってしまいます。
no1knows

2020/04/14 04:09

> 50件を表示している状態で、ブラウザの更新ボタンを押すと、今いる位置が表示されてしまうのですが、 ちなみにリロードしたあとのレコード数は50件になっているかたちでしょうか?
lyzmfeqpxs54

2020/04/14 05:17

度々のご回答ありがとうございます。 表示レコード数も更新する前と同様50件です。 更新後の動きとして「一番上へ移動したのち、すぐ更新前の位置に戻る」ような動きです。 情報が不足しておりました。大変申し訳ございません。
no1knows

2020/04/14 08:41

$('html,body').animate({ scrollTop: 0 }, '1');を$(window).scrollTop(0)とかに変更したらどうなるでしょうか? animateはゆっくり上がっていく形になるので、その間に$(window).on('scroll', function() {});が実行されている可能性が考えられるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問