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

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

新規登録して質問してみよう
ただいま回答率
85.50%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Ruby on Rails

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

Q&A

解決済

1回答

3382閲覧

【Ruby on Rails】turbolinkをオフにしたらjsが動作しなくなりました

pecchan

総合スコア555

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Ruby on Rails

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

0グッド

1クリップ

投稿2017/04/19 06:08

編集2017/04/21 01:00

お世話になっております。

あるリンク先の呼出時のみturbolinkをオフにして、jsを実行しようと試みましたが

app\assets\javascripts\common.jsまで動作しなくなりました。

具体的には、リンク先のクリックでポップアップが表示されるのが正解ですが、
別ページに移動し、戻ってきてクリックするとページの遷移になってしまいます。
画像を添付しました。

正常パターンは下図のようにjsによりポップアップウィンドウが表示されます
正常パターン

別ページに移動後、戻ってきてクリックすると、下図のようになります。
jsが動作せずただのページ遷移になっているようです。
NGパターン

呼出し元

ruby

1<-- data: { no_turbolink: true }を付けました。 --> 2<%= link_to 'ポップアップのテスト', '/choice.html', class: 'iframe_box', data: { no_turbolink: true } %> 3

こっちでも一緒
呼出し元

ruby

1<%= link_to 'ポップアップのテスト', '/choice.html', class: 'iframe_box', data: { turbolinks: false } %>

実行させたいjs(app\assets\javascripts\common.js)

javascript

1 2 3 4 5 6document.addEventListener 'turbolinks:load', -> 7 $('a.colorbox').colorbox() 8 return 9 10 11$ -> 12 $('.iframe_box').colorbox 13 iframe: true 14 innerWidth: 600 15 innerHeight: 600 16 return 17

なぜ、common.jsが動作しなくなっているのでしょうか?

宜しくお願い致します。

2017/4/21 coffe scriptのエラー画像追加
returnを2つ記述するとエラーが出るようなのですが・・・。
イメージ説明

2017/4/21 jsの読み込ませ方追加
jsは、
app\assets\javascripts以下にcommon.js.coffeeを置いています。内容は以下になります。

coffescript

1document.addEventListener 'turbolinks:load', -> 2 3$('.iframe_box').colorbox 4 iframe: true 5 innerWidth: 600 6 innerHeight: 600 7 return 8 9 $('a.colorbox').colorbox() 10 return 11 12

上記jsをapp\assets\javascripts\application.jsで
読み込んでます

coffescript

1//= require jquery 2//= require jquery_ujs 3//= require turbolinks 4//= require_tree . 5//= require bootstrap-sprockets 6//= require data-confirm-modal 7//= require cocoon 8//= require jquery.colorbox 9//= require common

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

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

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

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

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

moke

2017/04/20 05:26 編集

turbolinks5 ではdata: { no_turbolink: true }ではなくて data-turbolinks="false"ですよ後方互換でも動くかもしれませんが。また、common.jsのdocument.addEventListener("turbolinks:load", function()は省略されているのでしょうか?ここのloadを変えることによって動きを制御できます。例えばrenderにしてみるとか。
pecchan

2017/04/20 07:41

moke様 いつも有難う御座います。 すいません。一部省略してました。 ・data-turbolinks="false"も試しております。 ・document.addEventListener("turbolinks:load", function()は、あってもなくても動作が同じでした。 ・loadをrenderに変えてましたが同じでした。
moke

2017/04/20 08:25 編集

むむむむ、似た環境なので、少し原因を調査してみます。
pecchan

2017/04/20 08:29

moke様  申し訳ないです。有難う御座います。環境と言えばまだMacが買えずにいます。来月の給料が出るまではWindowsで・・・。
moke

2017/04/20 09:05 編集

いやこれはwindows のせいではないですよ windowsで起きるのはCで書かれた他のライブラリとの 競合が主ですし
moke

2017/04/20 08:58 編集

ん? $('.iframe_box').colorbox iframe: true innerWidth: 600 innerHeight: 600 を document.addEventListener 'turbolinks:loadに挟むのでは?
moke

2017/04/20 09:03

今更ですが、bootstrapにはデフォルトでホップアップの機能modalというのが常備されているのですが...
pecchan

2017/04/20 09:23

挟みましが同じでした。document.addEventListener 'turbolinks:load', -> $('.iframe_box').colorbox iframe: true innerWidth: 600 innerHeight: 600 $('a.colorbox').colorbox() return 
pecchan

2017/04/20 09:25

わー!知りませんでした!bootstrapに合ったんですね!!せっかくなんで頑張ってcolorboxで行ってみます(;o;) 
moke

2017/04/20 09:37

return一つ足りなくないですか?jsはエラーでても、普通に通るので、ブラウザの機能chromeだとディベロッパーツールとかから確認していただかないと
moke

2017/04/20 09:38

あと、javascriptをrailsに読み込ませる方法が複数あるので、どのように読みこませているかを書いてください。
guest

回答1

0

ベストアンサー

同一環境を設定して見ましたが、問題なく動くようです。
他のjavascriptライブラリとの競合が考えられます。
一つ一つ無効にして試すか

bootstrap modal を利用してください。

投稿2017/04/21 03:14

編集2017/04/24 02:17
moke

総合スコア2241

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

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

pecchan

2017/04/21 04:36

moke様 度々申し訳ないです。 有難う御座います。 はい。挟むようにアドバイス受けた時点で 上記の記述も試しておりますが動作せず(ポップアップ表示されず)です。 表示されない時に、Choromeのconsoleにも何も出力されておりません。
moke

2017/04/21 04:47

非推奨な方法なのですが document.addEventListener 'turbolinks:load', -> を $(document).on 'turbolinks:load', -> と変えてみるとどうでしょう。
pecchan

2017/04/21 05:01

moke様 有難う御座います。 現象、Choromeともに同じでした・・・。
moke

2017/04/21 05:27

うーん、わからないですね。 あとはfirebugを使ってjavascriptをデバッグするか... もしくは何か見落としているんでしょうね。 時間のある時でよければcolorboxをいれて試してみますので、しばしお待ちを
pecchan

2017/04/21 06:13

moke様 ここまでお付き合いいただき感謝してます。 有難う御座います。 firebugというものがあるんですね、こちらも教えていただき有難う御座います。 頑張ってみます。 何か分かりましたらご報告させていただきます。
moke

2017/04/21 06:45

firebugはfirefoxで使うのがオススメです。 というか、読んで字のごとく、firefoxじゃないと使う意味がない ぐらいfirefoxでの機能が充実してます
moke

2017/04/21 11:08 編集

うーん、同環境を構成してやってみましたが問題なく動きました。 そして、 $ -> $('.iframe_box').colorbox iframe: true innerWidth: 600 innerHeight: 600 return でないと反応しませんね、勉強不足でした。 こちらの同一環境だと、戻るボタンを押しても正常に動作します。 あと気になるのは //= jquery_ujs これはrails5から非推奨になったと思います。 もしかして競合の原因かもしれません。 あと多分ないと思いますがdata-confirm-modalも一応無効にしてみてください。
pecchan

2017/04/24 02:10 編集

moke様 有難う御座います。 //= jquery_ujsや data-confirm-modal削除しましたが同じでした。 時間的制約があり、これ以上この件の調査に時間を割くのは厳しいので 教えていただいたbootstrap のmodalを使おうと思います。 先ほどbootstrap のmodalに変えて動かしてますが 画面遷移後も問題なく動作しております。 こちらのほうが追加のgemやjsも不要でスッキリした感じです。 有難う御座いました。
moke

2017/04/24 02:18

おお、よかったです。 欲しい機能はbootstrapベースで探しましょう。 大抵、いいライブラリがありますよ。
pecchan

2017/04/24 02:36

moke様 そうなんですね! まずはbootstrapで探すようにします! 今までは、最初にgemで探していました。 有難う御座いました!!
moke

2017/04/24 05:29

ロジック→gem 見た目やUI→bootstrap等のjqueryプラグイン と考えましょう。 ex tagを実装したい(ロジック) gem act_as_taggleon タグをかっこよくつけたり外したりしたい(動き) bootstrap-tagsinput みたいな感じですね。
pecchan

2017/04/24 06:55

mokes様 なるほど! 確かにbootstrapはUI機能ですし。 「動き」という視点ですね! 分かりやすいご説明有難う御座います。 今後の指針になりました! 有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問