Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ruby on Rails、ActionCable、消息don';我没有出现_Javascript_Ruby On Rails_Ruby_Actioncable - Fatal编程技术网

Javascript Ruby on Rails、ActionCable、消息don';我没有出现

Javascript 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

谢谢你的帮助

我是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.coffee

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>")