LoginSignup
1
1

More than 3 years have passed since last update.

RailsでSlick使ったらTurbolinksで競合した。

Posted at

Slickを業務で使用したところ、
Turbolinksの影響で初回読み込み時にスライド全体が右に寄ってしまう。
という現象が起きていたので解消した方法を残しておきます。

環境

  • Rails5

  • jquery-slick-rails

jquery-slick-railsというgemを使用していますが、
これを入れる前に本家からダウンロード版入れて実装していました。
この時にも同じ現象が起きていたのでツールのせいではないと思われます。

状況

silickの設定でcenterMode: trueにしたところ、
ページの初回読み込み時(正確にはcookieにログが残っていない時)に、
スライド画像が全体的に右に寄ってしまう。というものです。

centerModeではない時にはきちんと表示されるので、
なぜこの時だけなのかはすみませんがわかりません。
もしわかる方いらっしゃいましたらぜひ教えてください。

色々調べた結果、Turbolinksが関係しているとわかりました。

対処法

まず最初に解決した方法を記述します。
対象ページをTurbolinksを使用しないようにします。

<%= link_to url, data: { 'turbolinks': false } %>

に飛ぶリンクに対してdata-turbolinks="false"をつけて、
そのページだけTurblinksをオフにします。
link_toに直接属性を追加していますが、
リンクを囲むdivタグを設置してこちらに属性を追加しても良いようです。

Turbolinksとは相性が悪そうですね。
Railsで使用する時には対策打っておいた方が良さそうです。

その他の試した方法

  • require turbolinksを削除する

これは本当にTurbolinksのせいなのかを確認した時に使った方法です。
基本的にはこちらはやらない方が良いでしょう。

  • turbolinks: loadを使う
$(document).on('turbolinks: load', () => {
    $('#selector').slick({
        centerMode: true
    });
})

これは基本だと思うんですが、
今回はこれをやってもダメでした。
書き方が間違ってたのかな. . .??
こういうとこちゃんとわかってないないところに勉強不足を感じます。

今回参考にさせて頂いた記事はこちらです。
Rails Turbolinksをページ毎に無効化する方法
ありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1