https://techtechmedia.com/action-cable-rails6/
仕様環境
windows10home
rails 6.0
railsについての質問です。
上記サイトのそのまま作ってrailsを学んでいるのですがこのまま動かしても”挙動確認1”がうまくいきません。アラートが出ない状態です。
エラー文は出ていません。
クロームの検証機能で内容を確認したのですが、フォームにうまく値が入っていないようです。わかる方どうにかお力添えお願いできないでしょうか。よろしくお願いいたします。
javascript
1// app\javascript\channels\room_channel.js 2 3import consumer from "./consumer" 4 5// 「const appRoom =」を追記 6const appRoom = consumer.subscriptions.create("RoomChannel", { 7 connected() { 8 // Called when the subscription is ready for use on the server 9 }, 10 11 disconnected() { 12 // Called when the subscription has been terminated by the server 13 }, 14 // 省略 15 16 received(data) { 17 return alert(data['message']); 18 }, 19 20 speak: function(message) { 21 return this.perform('speak', {message: message}); 22 } 23}); 24window.addEventListener("keypress", function(e) { 25 if (e.keyCode === 13) { 26 appRoom.speak(e.target.value); 27 e.target.value = ''; 28 e.preventDefault(); 29 console.log(e.target.value) 30 } 31}) 32
ruby
1# app\channels\room_channel.rb 2 3class RoomChannel < ApplicationCable::Channel 4 def subscribed 5 stream_from "room_channel" 6 end 7 8 def unsubscribed 9 # Any cleanup needed when channel is unsubscribed 10 end 11 12 def speak(data) 13 ActionCable.server.broadcast 'room_channel', message: data['message'] 14 end 15end
html
1<!-- app\views\rooms\show.html.erb --> 2 3<h1>Chat room</h1> 4<div id="messages"> 5 <%= render @messages %> 6</div> 7<form> 8 <label>Say something:</label><br> 9 <input type="text" data-behavior="room_speaker"> 10</form>
ruby
1# app\controllers\rooms_controller.rb 2 3class RoomsController < ApplicationController 4 def show 5 @messages = Message.all 6 end 7end
html
1<!-- app\views\messages\_message.html.erb --> 2 3<div class="message"> 4 <p><%= message.content %></p> 5</div>
ruby
1# config\routes.rb 2 3Rails.application.routes.draw do 4 mount ActionCable.server => '/cable' 5 root to: 'rooms#show' 6end
あなたの回答
tips
プレビュー