[英]What is the best way to separate user settings into multiple pages in Ruby on Rails?
我正在使用Ruby on Rails和Devise gem開發一個應用程序,默認情況下,該應用程序具有一個編輯頁面,但是我想將某些設置分隔到另一個頁面中,例如“ / settings / security”,“ / settings / avatar” “ 等等。 我能做到的最好方法是什么? 我應該為每個頁面還是其他方法創建另一個控制器? 謝謝。
在UsersController本身中,添加方法security,avatar並根據此類添加路由,
獲取“ / settings / security”,以:“ user#security”
如果需要的話, Wicked是可以幫助您創建和處理步驟wizard form
的gem
。
為了擴展@Navin的答案,在這種情況下(向控制器添加自定義[non-crud]動作),我建議像這樣設置路由:
namespace :settings do
resources :user do
member do
get :security
get :avatar
end
end
end
這將為您提供路徑:
如果您希望能夠從這些頁面修改其他用戶,則此方法效果很好。
如果僅希望能夠編輯已登錄用戶的屬性,則可能需要通過Devise的current_user
方法來收集ID,因此您不希望該URL中的用戶ID。 在這種情況下,將member
替換為collection
namespace :settings do
resources :user do
collection do
get :security
get :avatar
end
end
end
這將為您提供路徑:
我建議:
如果新視圖是現有視圖的替代視圖,則添加一個自定義視圖。 例如,如果我希望顯示視圖僅顯示控制器資源數據的子集(例如,一個用戶名和電子郵件),但我還想要一個顯示更多數據(例如,名稱,電子郵件,地址,電話號碼)的詳細視圖,那么我將在控制器上使用自定義的“詳細信息”視圖。
如果新視圖顯示與附加到控制器資源的資源有關的信息,則應使用新控制器。
以您的示例為例,如果安全性視圖顯示僅與安全性相關的設置-這是修改后的編輯視圖,並且我將在設置控制器上使用自定義操作。
化身很可能是附加到設置資源的資源-因此應具有自己的控制器。
最后,如果您希望通過多個步驟輸入設置,建議您參考一些多步驟技術 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.