gpt4 book ai didi

ruby-on-rails - Rails 5 ActionCable通过URL参数建立流

转载 作者:行者123 更新时间:2023-12-03 16:06:42 25 4
gpt4 key购买 nike

我几乎对Rails完全陌生,或者我确定我会自己回答这个问题。我只是想修改在基本ActionCable演示中创建的基本聊天应用程序:https://medium.com/@dhh/rails-5-action-cable-demo-8bba4ccfc55e#.6lmd6tfi7

我想要拥有多个聊天室,而不是只有一个聊天室,因此我通过添加以下行来修改了routes.rb:
get '/rooms/show/:topic', to: 'rooms#show'
因此,现在我可以根据不同的主题访问不同的聊天室。 /app/controllers/rooms_controller.rb的Rooms Controller 可以毫无问题地处理这些路由:

class RoomsController < ApplicationController
def show
@topic = params[:topic]
@messages = Message.all
end
end

但是此参数未传递给 app/channels/room_channel.rb,我不确定是否需要进行哪些修改。我目前的尝试:
class RoomChannel < ApplicationCable::Channel
def subscribed
stream_from "room_channel_#{params[:topic]}"
end

只返回“room_channel_”

最佳答案

这里的问题是我无法理解从何处调用订阅方法,因此不知道如何将参数传递给它。

通过阅读actioncable文档:https://github.com/rails/rails/tree/master/actioncable

我发现,订阅方法是通过客户端javascript而不是rails Controller 调用的。在示例聊天应用程序的情况下,这意味着我必须更改文件/app/assets/javascripts/channels/room.coffee的第一行

App.room = App.cable.subscriptions.create "RoomChannel",


App.room = App.cable.subscriptions.create { channel: "RoomChannel", topic: topic},

通过将javascript对象传递给此方法,可以访问 subscribedrooms_controller.rb方法中的那些参数。

关于ruby-on-rails - Rails 5 ActionCable通过URL参数建立流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com