0

我希望有一個My_Events頁面,該頁面除了顯示系統中所有事件的索引頁面外,還只顯示當前用戶訂閱的事件,並允許用戶操作這些事件。我的活動的Rails控制器設計模式

我應該如何解決這個問題以符合RESTful模式?我應該只創建一個my_events動作和my_event.html.erb,或者爲它創建一個新的控制器?選擇另一種方法的理由是什麼?

謝謝。

+0

沒有人回答。我會在當前的控制器中開始使用它,並在開始出現很多「我的」內容之後進行移動。 –

回答

1

如果您恰好有一個用戶控制器,將事件操作添加到該操作並根據用戶爲用戶特定事件進行路由將看起來最RESTful。

# app/controllers/users_controller.rb 
class UsersController < ApplicationController 
    ... 
    def events 
    @user = User.find params[:id] 
    @events = @user.events 
    end 
end 

# config/routes.rb 
resources :users do 
    member do 
    get 'events' 
    end 
end 

過類似/事件/ my_events這樣做的好處是,URL是唯一的正在被呈現的數據。如果用戶使用link/users/fubar/events,那麼它將顯示用戶fubar的事件,其中與/ events/my_events類似,生成的頁面與會話綁定,而不是URL。

當然,這取決於你的目標是什麼,以及你的應用程序有什麼要求。

+0

感謝您的一個不錯的方法和詳細的解釋! – AdamNYC

0

您可以在另一個控制器中加載這些方法,這些方法加載這些事件並執行所有您需要的操作。但是如果你想使用索引,編輯,刪除和創建新的事件,我會建議有一個events_controller,因爲在未來添加行和行代碼時它會更好。

這就是每個模型都有一個控制器的要點,讓每件事都有序。