###行いたいこと
・Railsでのリアルタイムでのチャット機能
※CoffeeScriptなのでJavaScriptとコードが違うと思うのですが、JavaScriptでの解決方法がお分かりの方はJavaScriptでの方法でも良いので教えていただけますと幸いです。
###channelのファイル名
$ rails g channel chatroom speak create app/channels/chatroom_channel.rb create app/assets/javascripts/channels/chatroom.coffee
###できていること
画面をリロードした場合のみ以下のコードの実行。
# channels/chatroom.coffee document.addEventListener 'DOMContentLoaded', -> input = document.getElementById('chat_input') data_user = input.getAttribute("data_user") data_room = input.getAttribute("data_room") button = document.getElementById('chat_button') button.addEventListener 'click', -> content = input.value App.chatroom.speak(content, data_user, data_room) input.value = '' return return
###できていないこと・質問内容
①他のページからチャットページへ移動した後に、チャットの送信ができなくなっているため遷移後の作動するようにする方法
(リロードすればできるようになります)
②トップページ などで指定のidがないときには、以下のようなエラーが出るのではなくスルー処理をする方法
###分かったこと
①HTMLを読み込んだ後に起動して欲しい以下のコードがページ遷移後に動いていない
# channels/chatroom.coffee document.addEventListener 'DOMContentLoaded', -> input = document.getElementById('chat_input') data_user = input.getAttribute("data_user") data_room = input.getAttribute("data_room") button = document.getElementById('chat_button') button.addEventListener 'click', -> content = input.value App.chatroom.speak(content, data_user, data_room) input.value = '' return return
②getAttributeで指定した値がないときにはnullを返すと分かったため、以下の記事を参考に、hasAttribute
を使って、idがある場合のみ実行したかったのですが、以下のようなエラーが現れできませんでした。
、[https://syncer.jp/Web/API_Interface/Reference/IDL/Element/hasAttribute/]
# channels/chatroom.coffee ※coffeescriptのためコードが少し違います。 document.addEventListener 'DOMContentLoaded', -> input = document.getElementById('chat_input') if input.hasAttribute('data_user') data_user = input.getAttribute("data_user") #(省略)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/24 12:28