前提・実現したいこと
Ruby on RailsのActionCableを使用してチャットアプリの作成をしております。
Webビュー上で入力フォームに内容を入力しエンターキーを押下後内容がWebビューに反映されません。
エンターキー押下時に内容を表示させる処理でどこが間違っているかご教授いただけたら幸いです。
質問に不備があるかもしれませんが、宜しくおねがいします。
▼アプリ作成に参考にしたサイト
https://qiita.com/sunaga70/items/1f0add0dbcd0564cafee
http://ticklecode.com/rails-5-0-0-rc1-chat-action-cable/
発生している問題・エラーメッセージ
エンターキーを押下時にエラーが表示はされません。
押下しても反応がない状態です。
また、railsサーバは常に動いている状態なので更新されている認識です。
該当のソースコード
エンターキー押下時に反応がせず、サーバーは定期的に動いている状態からjQueryで何か足りていない部分があるのかと思い、関係ありそうなコードを記載してみました。
#/app/assets/javascripts/channels/room.coffee App.room = App.cable.subscriptions.create "RoomChannel", connected: -> disconnected: -> received: (data) -> $('#messages').append data['message'] speak: (name, content) -> @perform 'speak', {name: name, content: content} #Enter押した時の処理、データを受け取った処理 $(document).on 'keypress', '[data-behavior~=room_speaker]', (event) -> if event.keyCode is 13 # return = send App.room.speak($('.js-name').val(), $('.js-content').val()) event.target.value = '' event.preventDefault()
#/app/channels/room_channel.rb class RoomChannel < ApplicationCable::Channel #コンシューマがこのチャネルのサブスクライバ側になると #このコードが呼び出される def subscribed stream_from "room_channel" end def unsubscribed # Any cleanup needed when channel is unsubscribed end #ブロードキャストされたものを保存したい def speak(message) Message.create!(name: message['name'], content: message['content']) end end
/app/views/layouts/application.html.erb <!DOCTYPE html> <html> <head> <title>Chat</title> <%= csrf_meta_tags %> <%= csp_meta_tag %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <%= yield %> </body> </html>
#app/models/concerns/message.rb class Message < ApplicationRecord #データが作成されたら非同期でブロードキャスト処理を実行 after_create_commit { MessageBroadcastJob.perform_later self } end
試したこと
・jQueryの読み込み直し
app/assets/javascript/channels/application.js ~~省略~~ //= require jquery //= require jquery_ujs //= require jquery.turbolinks //= require activestorage //= require turbolinks //= require_tree .
・サーバ再起動
補足情報(FW/ツールのバージョンなど)
Ruby ver: 2.5.1p57
Rails ver: 5.2.2
エディタ:Atom
・terminal-plus
・browser-plus
OS:macOS 10.13.6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。