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

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

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

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

1回答

975閲覧

railsでページ外からリンクした際に、ページ内のアンカーリンクまで飛ばしたいです。簡単なはずなのに解決できず大変困っております。

akikko

総合スコア32

Ruby on Rails 5

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2021/08/06 04:07

編集2021/08/06 04:12

ページ外に貼ってあるリンクをクリックをした際に、
ページ内のidまで移動して表示させたいのですが、なかなか調べても見つけられず教えていただけると非常に嬉しいです。
(jquryを使用していましたが、ページが重くなってしまい原因調査が必要なため、htmlだけで実装したいです)

###現在の実装例
現在、お客様への通知メールに

https://example.com/pages#daiji

といった#付きのリンクを貼っております。

メールのリンクをクリックし、webページに記載されいている
#daijiのところまで移動してくれません。

(メールはテキストメールのため、link_to や <a href = ###>といった記述を行うことができません。)

###HTML

<div id="daiji">  <h2>新着報告</h2> </div>

アドレスでid=daijiまで移動させるにはどうのように記述すればよいのでしょうか?
実アプリのため、ユーザビリティが悪く怒られており、どなたか助けて頂けますと大変嬉しいです。
どうぞよろしくお願いいたします。

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

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

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

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

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

k4a

2021/08/06 05:47

通常であれば記載の内容だけでアンカーへ遷移するはずですが、Rail特有の何かがあるのかもしれません。 jQueryを使用するとページが重くなるというのは、jQueryを読み込むだけで重くなるということでしょうか?それとも今回の処理を実現しようとすると重くなるということですか? アンカーの方には何か簡単な原因があるのかもしれませんが、早急の対応が必要なのであれば一旦jQueryで誤魔化しておくのが良いと思います。 今回の処理程度で重くなることは無いと思うので、そちらの原因解消の方が楽かもしれません。 jQueryで実現するならこんな感じになると思いますが、これも重くなりますか? ``` $(window).on("load", function () { const hash = location.hash; if (hash && $(hash).length > 0) { setTimeout(() => { $("html, body").animate({ scrollTop: $(hash).offset().top }, 0); }, 0); } }); ```
akikko

2021/08/06 07:28

大変ご丁寧に本当にありがとうございます。 記載内容だけでアンカーへ遷移するのですね????なるほど・・・そうしますと、何かよく分からないものが邪魔をしている可能性がありますね???? jQueryも大変ありがとうございます。 bootstrapのタブをひらいてからスクロールを行っておりまして、 $(function(){ if (location.hash) { var url = window.location.href; var activeTab = url.substring(url.indexOf("#") + 1); $('a').removeClass("active in"); $('a[href="#'+ activeTab +'"]').tab('show'); $("html,body").animate({scrollTop:$('a[href="#'+ activeTab +'"]').offset().top}); return false; } }); という記載を行っています。 この記載を実装した後、サーバーのtimeoutが頻発するようになってしまいまして、どうしたものかと頭を悩ませております。
winterboum

2021/08/06 07:49

そのページの構造はシンプルですか?なにか工夫入れてません? 何かしないと hide になってるとか 閉じてるタブの中にある、とか
akikko

2021/08/06 08:49 編集

>winterboum様 ありがとうございます。bootstrapのタブ構造(3つ 詳細・報告・コメント)になっておりまして、メイン(詳細)のタブclassに「active」が入っております。 #付きのリンクをクリックした際に、一度activeクラスを削除し、報告タブを開かせて、そこまでスクロールさせるjQueryを書いております。 この処理自体が問題ありそうでしょうか!?
guest

回答1

0

アンカー付きのURLでアンカーに行かないとすると、「実は行っているのだがアクティブなタブではないのでそう見えない」では無いのかな、と思います。
開きたいタブのidを仮に 'daiji_tab' としたとして
https://example.com/pages?tab=daiji_tab#daiji とし

aactionで
@activetab = params[:tab] || defaultなタブのid
として、
viewにて、@activetab な tab をactiveにする、
としてみてはどうでしょう

投稿2021/08/07 00:03

winterboum

総合スコア23416

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問