所以如果我的標題有點不清楚,請原諒我;我試圖儘可能通用。如果模型A has_many B的實例,通過另一個模型C,我該如何創建一條路徑來銷燬特定A實例上的B實例?
我有一個模型User
,ChatRoom
模型和ChatRoomUser
模型(它沒有控制器)。 User
與ChatRoom
有has_many
關係,通過ChatRoomUser
,反之亦然。
我想製作一個允許用戶離開其中一個聊天室的路線;我有代碼來處理室的實際離開時,在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([email protected]?)
@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製作一個控制器並在其上做一個銷燬方法來處理這個問題?我不知道這是否是一種好的做法(僅爲單一方法制作控制器)。
在此先感謝您的幫助。