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

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

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

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

Ruby on Rails

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

764閲覧

【Ruby・jQuery】リロードしないとタブのコンテンツが表示されない

punchan36

総合スコア105

Ruby

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

Ruby on Rails

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/02/16 23:43

前提・実現したいこと

RubyにてjQueryを使用しページ内タブを実装しました。上手く機能はするのですが、他ページ(他ユーザーから見た該当のタブ)ではリロードしないとコンテンツが表示されません。リロードをしなくても上手く表示出来るよう改善したいです。

該当のソースコード(show.html.erb)

Ruby

1<div class="main user-show"> 2 <div class="container"> 3 <div class="user"> 4 <img class="cover_photo" src="<%= "/user_cover_images/#{@user.cover_image_name}" %>"> 5 <img class="photo" src="<%= "/user_images/#{@user.image_name}" %>"> 6 <h2><%= @user.name %></h2> 7 <% if @user.id == @current_user.id %> 8 <%= link_to("編集", "/users/#{@user.id}/edit") %> 9 <%= link_to("削除", "/users/#{@user.id}/destroy", {method: :post, data: {confirm: "Are you sure to delete your account?"}, class: "link"}) %> 10 <% end %> 11 </div> 12 13 <h3> 14 <%= render 'users/follow_form' %> 15 </h3> 16 <h4> 17 <%= render 'users/stats' %> 18 </h4> 19 20 <!--タブ--> 21 <ul class="tab-group"> 22 <li class="tab is-active">Tab-A</li> 23 <li class="tab">Tab-B</li> 24 <li class="tab">Tab-C</li> 25 </ul> 26 27 <!--タブを切り替えて表示するコンテンツ--> 28 <div class="panel-group"> 29 <div class="panel is-show">Content-A</div> 30 <div class="panel">Content-B</div> 31 <div class="panel">Content-C</div> 32 </div> 33 </div> 34</div>

該当のソースコード(tab.js)

jQuery

1jQuery(function($){ 2 $('.tab').click(function(){ 3 $('.is-active').removeClass('is-active'); 4 $(this).addClass('is-active'); 5 $('.is-show').removeClass('is-show'); 6 // クリックしたタブからインデックス番号を取得 7 const index = $(this).index(); 8 // クリックしたタブと同じインデックス番号をもつコンテンツを表示 9 $('.panel').eq(index).addClass('is-show'); 10 }); 11});

該当のソースコード(users.scss)

CSS

1.tab-group{ 2 display: flex; 3 justify-content: center; 4} 5 6.tab{ 7 flex-grow: 1; 8 padding:5px; 9 list-style:none; 10 border:solid 1px #CCC; 11 text-align:center; 12 cursor:pointer; 13} 14 15.panel-group{ 16 height:100px; 17 border:solid 1px #CCC; 18 border-top:none; 19 background:#eee; 20} 21 22.panel{ 23 display:none; 24} 25 26.tab.is-active{ 27 background:#00CCFF; 28 color:#FFF; 29} 30 31.panel.is-show{ 32 display:block; 33}

試したこと

過去の質問記事を参考に、"turbolinks:load"の辺りを以下の様にいじってみましたが上手くいきません。
どなたかお知恵を拝借頂けると幸いです。

該当のソースコード(tab.js)

jQuery

1li.addEventListener("turbolinks:load", function() { 2 jQuery(function($){ 3 $('.tab').click(function(){ 4 $('.is-active').removeClass('is-active'); 5 $(this).addClass('is-active'); 6 $('.is-show').removeClass('is-show'); 7 // クリックしたタブからインデックス番号を取得 8 const index = $(this).index(); 9 // クリックしたタブと同じインデックス番号をもつコンテンツを表示 10 $('.panel').eq(index).addClass('is-show'); 11 }); 12 }); 13}) 14
エラーメッセージ Errno::EACCES in Users#show Showing C:/Users/hoge/app/views/layouts/application.html.erb where line #9 raised: <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

補足情報(FW/ツールのバージョンなど)

ruby 2.6.4p104
RubyGems 3.0.3
Rails 5.2.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

Turbolinksの設定を修正してみてください。
https://teratail.com/questions/238895#reply-347312

投稿2020/02/17 01:42

no1knows

総合スコア3365

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

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

punchan36

2020/02/17 03:17

無事解決出来ました。コードの書き方に誤りがあったようです。 jQueryについても、もっとよく勉強してみます。 有難うございました!
no1knows

2020/02/17 04:02

それは良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問