【发布时间】:2017-06-16 19:38:07
【问题描述】:
如果我的标题有点不清楚,请原谅我;我试图使其尽可能通用。
我有一个模型User、一个ChatRoom 模型和一个ChatRoomUser 模型(没有控制器)。 User 通过ChatRoomUser 与ChatRoom 有has_many 关系,反之亦然。
我想制定一条路线,让用户离开其中一个聊天室;我有处理实际离开房间的代码,在UsersController:
def leave
@chosen = ChatRoom.find(params[:chat_room_id])
if @chosen.nil?
redirect_back(fallback_location: chat_room_path(@chosen))
end
current_user.chat_rooms.remove(@chosen)
# If there are no users left in the room, destroy it.
if(!@chosen.users.any?)
@chosen.destroy
end
redirect_to chat_rooms_path
end
我认为这很好。但我不清楚如何为此正确设置路线。我的路线文件中有:
delete '/users/chat_room/:chat_room_id', to: 'users#leave'
但我不知道如何在 html.erb 文件中引用它。我试过<%= link_to users_chat_room_path(@chatroom), method: :delete %>,但没有骰子。
我是否应该为 ChatRoomUsers 创建一个控制器并在其上创建一个 destroy 方法来处理这个问题?我不知道这是否是一种好习惯(为单一方法制作控制器)。
提前感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails ruby routing