Javascript Ruby on Rails、ActionCable、消息don';我没有出现
谢谢你的帮助 我是rails新手,一直在尝试遵循以下指南: 过去,在学校忙碌之前,我就已经实施了ActionCable,当时也不是没有什么问题,现在它又给我带来了麻烦。我在那个视频中到达17:00分钟,没有任何问题,一切都有意义——但是当我发送命令时,它不会显示任何消息 那么,我看到的是: “hello world”正在显示,但没有任何给定的输入(甚至在重新加载页面时也没有) 我的终端中的第一个: 2016-05-23 21:45:00-0600开始为::1获取“/电缆” 于2016-05-23 21:45:00-0600开始为::1获取“/cable/”[WebSocket] 已成功升级到WebSocket(请求\方法:GET,HTTP\连接:升级,HTTP\升级:WebSocket) RoomChannel正在传输订阅确认 RoomChannel正在从room_频道进行流式传输 RoomChannel#说话({“消息”=>“特拉维斯:整洁!”) [ActionCable]向room_频道广播:“特拉维斯:太棒了!” RoomChannel传输“Travis:Neat!”(通过room_频道的流媒体) 网络控制台: App.room.speak('Travis:Neat!') 真的 我可以发布一些代码,我应该发布一些代码,但我相当确定我所有的代码都是按照视频编写的。我还要整理一下,我只是在寻找一些提示/见解/帮助,以便了解其他想法/事情。在我以前实现ActionCable的尝试中,我也遇到过类似的问题,消息甚至会被发送和处理,但直到重新加载网页后才会显示 谢谢你的帮助 。。。好吧,我想我最好先写一些代码: javascripts/channels/room.coffeeJavascript Ruby on Rails、ActionCable、消息don';我没有出现,javascript,ruby-on-rails,ruby,actioncable,Javascript,Ruby On Rails,Ruby,Actioncable,谢谢你的帮助 我是rails新手,一直在尝试遵循以下指南: 过去,在学校忙碌之前,我就已经实施了ActionCable,当时也不是没有什么问题,现在它又给我带来了麻烦。我在那个视频中到达17:00分钟,没有任何问题,一切都有意义——但是当我发送命令时,它不会显示任何消息 那么,我看到的是: “hello world”正在显示,但没有任何给定的输入(甚至在重新加载页面时也没有) 我的终端中的第一个: 2016-05-23 21:45:00-0600开始为::1获取“/电缆” 于2016-05-23
App.room = App.cable.subscriptions.create "RoomChannel",
# Called when the subscription is ready for use on the server
connected: ->
# Called when the subscription has been terminated by the server
disconnected: ->
# Called when there's incoming data on the websocket for this channel
received: (data) ->
$('#messages').append "<div>#{data}</div>"
speak: (message) ->
@perform 'speak', message: message
received: (data) ->
console.log(data)
$('#messages').append "<div>#{data}</div>"
频道/房间\频道.rb
class RoomChannel < ApplicationCable::Channel
def subscribed
stream_from "room_channel"
end
def unsubscribed
# Any cleanup needed when channel is unsubscribed
end
def speak(data)
ActionCable.server.broadcast 'room_channel', data['message']
end
end
/config/cable.yml
production:
adapter: redis
url: redis://localhost:6379/1
/config/database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
development:
<<: *default
database: [InsertNameOfMyAppHere]_development
[回应格雷厄姆·斯里克]
App.room.speak('这行吗?'))
真的
-----------------------
这行吗
-----------------------
添加代码:(Javascripts/channels/room.coffee)
接收:(数据)->
console.log(数据)
$(“#消息”)。追加“#{data}”
您没有任何带有消息的div
,因此:
$('#messages').append "<div>#{data}</div>"
$(“#消息”)。追加“#{data}”
这是行不通的。
将其添加到视图/rooms/show.html.erb中的html中:
<h1>ActionCable chat</h1>
<div id="messages">
<%= render @messages %>
</div>
ActionCable聊天室
此外,您的jquery不正确,应该是:
$('#messages').append("<div>" + data + "</div>")
$('#消息')。追加(“+data+”)
您没有任何带有消息的div
,因此:
$('#messages').append "<div>#{data}</div>"
$(“#消息”)。追加“#{data}”
这是行不通的。
将其添加到视图/rooms/show.html.erb中的html中:
<h1>ActionCable chat</h1>
<div id="messages">
<%= render @messages %>
</div>
ActionCable聊天室
此外,您的jquery不正确,应该是:
$('#messages').append("<div>" + data + "</div>")
$('#消息')。追加(“+data+”)
能否在收到的操作(javascripts/channels/room.coffee)中添加console.log(数据)?添加console.log发送消息时,您在chrome的控制台中看到了什么?Web控制台:(App.room.speak('dot This Work?')true)来自日志的响应:(dot This Work?)添加代码:received:(data)->console.log(data)$('#messages')。追加“#{data}”您能在收到的操作中添加console.log(data)吗(javascripts/channels/room.coffee)?添加console.log发送消息时,您在chrome控制台中看到了什么?Web控制台:(App.room.speak('This Work?')true)来自日志的响应:(This Work?)添加代码:received:(data)->console.log(data)$('#messages')。追加“{data}”真棒的格雷厄姆!非常感谢!而且,它没有定义数据[“消息”],但如果我只是将其作为数据保留,它就工作了。真棒的格雷厄姆!非常感谢!它也没有定义数据[“消息”],但如果我只是将其作为数据保留,它就工作了。
Array values in the parameter to `Gem.paths=` are deprecated.
Please use a String or nil.
An Array ({"GEM_PATH"=>["/Users/Kegan/.rvm/gems/ruby-2.3.1", "/Users/Kegan/.rvm/gems/ruby-2.3.1@global"]}) was passed in from bin/rails:3:in `load'
=> Booting Puma
=> Rails 5.0.0.rc1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
[Simple Form] Simple Form is not configured in the application and will use the default values. Use `rails generate simple_form:install` to generate the Simple Form configuration.
Puma starting in single mode...
* Version 3.4.0 (ruby 2.3.1-p112), codename:
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
received: (data) ->
console.log(data)
$('#messages').append "<div>#{data}</div>"
$('#messages').append "<div>#{data}</div>"
<h1>ActionCable chat</h1>
<div id="messages">
<%= render @messages %>
</div>
$('#messages').append("<div>" + data + "</div>")