Ruby on rails ActionCable在操作后显示空页

Ruby on rails ActionCable在操作后显示空页,ruby-on-rails,actioncable,Ruby On Rails,Actioncable,我正在关注Michael Hartl关于Rails 5 ActionCable的内容,以建立一个简单的聊天,在MessageController中的create操作中出现了一个问题: def create message = current_user.messages.build(message_params) if message.save ActionCable.server.broadcast 'room_channel',

我正在关注Michael Hartl关于Rails 5 ActionCable的内容,以建立一个简单的聊天,在
MessageController
中的
create
操作中出现了一个问题:

  def create
    message = current_user.messages.build(message_params)
    if message.save
      ActionCable.server.broadcast 'room_channel',
                                     content:  message.content,
                                     username: message.user.username
      head :ok
    end
  end
直到
head:ok
,然后显示一个空的HTML页面。日志是:

Processing by MessagesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"h9UsB78aX8mO8Nyn8eZEUuDzAOxL4V7UCMwNuTfwALliMv7OCkcUIeR4/xXIcvPjwq9H1bphjn6G96G+0VYisw==", "message"=>{"content"=>"oi"}, "commit"=>"Send"}
  User Load (1.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
  Message Load (2.1ms)  SELECT  "messages".* FROM "messages" ORDER BY "messages"."created_at" DESC LIMIT ?  [["LIMIT", 50]]
   (0.3ms)  begin transaction
  SQL (9.3ms)  INSERT INTO "messages" ("content", "user_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["content", "oi"], ["user_id", 1], ["created_at", 2016-09-19 02:12:58 UTC], ["updated_at", 2016-09-19 02:12:58 UTC]]
   (9.1ms)  commit transaction
[ActionCable] Broadcasting to room_channel: {:content=>"oi", :username=>"alice"}
Completed 200 OK in 69ms (ActiveRecord: 22.0ms)


RoomChannel transmitting {"content"=>"oi", "username"=>"alice"} (via streamed from room_channel)
Finished "/cable/" [WebSocket] for 10.0.2.2 at 2016-09-19 02:12:58 +0000
RoomChannel stopped streaming from room_channel
(之后,我可以刷新页面并正确显示消息)

为什么会这样

我的房间香奈儿班:

class RoomChannel < ApplicationCable::Channel
  def subscribed
    stream_from "room_channel"
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end

end

在一个建议之后,我添加了我为解决这个问题所做的回答。它不能回答为什么会发生这种情况,但可以解决问题

解决方案是:删除
头部:ok


另一方面,这是不必要的,因为如果我在操作中添加一个带有断言响应:成功的测试,它就会通过。

我知道答案已经被接受了,但是这个解决方案对我有效,而不必删除
标题:ok
,也许它可以帮助某人

通常在开发环境中,人们运行的是
localhost:3000
,但我运行的是另一个端口,
localhost:3030

在本例中,我必须为该端口添加一个允许的请求源,如下所示:

config.action_cable.allowed_request_origins = [
      'http://localhost:3030'
  ]

到我的
/config/environments/development.rb

我完成了教程。哦,这并不能回答我的问题“为什么”会发生这种情况,但我给其他有同样问题的人的建议是:删除
头部:ok
。另外,这是不必要的,因为如果我在操作中添加一个带有“断言响应:成功”的测试,它就会通过。我建议你将此添加为一个答案,而不是一个注释,这样它可以被提升,更容易看到,等等。这对我也很有用。很高兴知道,@EdRuder。答案已添加。不幸的是,这为我返回了“找不到MessagesController创建、呈现头的模板:没有内容”。它没有显示通常的白色屏幕,但似乎按钮没有任何作用。如果我刷新,则消息可见。
config.action_cable.allowed_request_origins = [
      'http://localhost:3030'
  ]