rails5.2とjavascriptで開発してます。
javascriptは特に分かりません。
ここ
を参考にしてます。
上記の、「Room.idを受け取り、監視する場所を分ける」
という箇所のスクリプトを流用しました。
app/javascript/channels/room_channel.js
javascript
1/* global $*/ 2// $(function() {}; で囲むことでレンダリング後に実行される 3// レンダリング前に実行されると $('#messages').data('room_id') が取得できない 4$(function() { 5 alert("test") 6 const chatChannel = App.cable.subscriptions.create({ channel: 'ChatChannel', room: $('#messages').data('room_id') }, { 7 connected() { 8 }, 9 10 disconnected() { 11 }, 12 13 received: function(data) { 14 return $('#messages').append(data['message']); 15 }, 16 17 post: function(message) { 18 return this.perform('post', { message: message }); 19 } 20 }); 21 22 $(document).on('keypress', '[data-behavior~=chat_post]', function(event) { 23 if (event.keyCode === 13) { 24 chatChannel.post(event.target.value); 25 event.target.value = ''; 26 return event.preventDefault(); 27 } 28 }); 29}); 30
上記スクリプトは、ページのレンダリング後に実行されなければいけません。
参考先では、「$(function() {}; で囲むとレンダリング後に実行される」とコメントに記載されてます。
ですが当方の環境ではレンダリング前に実行されているようです。
というのは、2行目でalertを差し込みましたが、初回ページ表示にはalretが出ず、
F5更新でalertが出るからです。
どうすれば毎回レンダリング後に実行されるようになるでしょうか?
$(document).on('turbolinks:load', function(){
で囲ってあげるのでしょうか?
→試したいのですが、恥ずかしながら動くものを書けませんでした・・・。
分かる方教えていただけないでしょうか?
宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/21 06:39
2020/07/21 08:15
2020/07/22 07:13
2020/07/22 08:05
2020/07/27 13:44