Techioz Blog

Rails link_to: クリックしますが、その場に留まり、ページの先頭にはジャンプしません。

概要

Railsアプリにlink_toがあります。ツールチップとして機能します。ユーザーがリンク上にマウスを移動すると、ヘルパー テキストが表示されます。

ユーザーが誤ってツールヒントをクリックした場合: ページの先頭にジャンプするというデフォルトの動作は望ましくありません。 JavaScript を使用するとデフォルトを防ぐことができることはわかっていますが、これと同じ動作を実現する簡単な Rails 方法はありますか?

私はremote: trueを考えていましたが、それでもページの先頭にジャンプします。

コード:

<%= link_to "#", title: 'my helper text', remote: true do %>
  <i class="fa fa-question-circle"></i>
<% end %>

解決策

空のアンカーを使用すると、経験したとおり、ドキュメントの先頭までスクロールすることになります。ただし、存在しないアンカーを指定してもスクロール位置は変わりません。例えば:

<a href="#doesnotexist">Stay Here</a>

ただし、これによってドキュメントの URL とブラウザの履歴が変更されることになり、ユーザー エクスペリエンスは悪化します。

JS 経由で処理されるリンクなど、ページを変更すべきではないリンクの場合は、プログレッシブ エンハンスメントを絶対に使用し、最も適切な方法 (return false または e.preventDefault) で JS でのブラウザー アクションを防止する必要があります。

実際にはどこにもリンクすべきではないツールチップがある場合は、それらを別のインライン要素 (span など) に変更するのが最善でしょう。