我创建了一个与ActionCable聊天:有一个普通的公共聊天和直接消息选项。现在我想实现私人聊天室(如Slack的那些)。直接消息和私人聊天室之间的唯一区别是第一个仅在2个人之间,第二个显然是2个或更多,可以选择添加新人或“删除”某人。 创建私人信息非常简单。我有一个PrivateMessagesController有一个动作 - 显示。当用户点击其他用户的名字时,会话开始。 在我的show.html.erb中,我将用户的用户名显示为链接:
<%= link_to user.email, direct_message_path(user.id), data:
{behavior: "chatroom-link", chatroom_id:
Chatroom.direct_chat([current_user, user]).id } %>
对话的路径是
http://localhost:3000/direct_messages/3
其中“3”是其他用户的ID。
我无法弄清楚应该将id
传递给我的
http://localhost:3000/private_chatrooms/id
我有创建新聊天室的普通表格。我在visibility
模型中添加了Chatroom
列 - 它是字符串,'public'
或'private'
。因此,在创建新Chatroom
时,我提供其名称,选择其类型(可见性),并且我还有具有复选框的用户列表。但是,params[:user_ids]
(仅来自checkbox_tag)的用户ID仅适用于create
操作,然后我就失去了它。
更重要的是,我需要在创建聊天室后添加人员。
我认为添加私人聊天室与创建私人消息没有什么不同(理论上只是参与者的数量不同)但我真的是在圈子里跑。