簡體   English   中英

在Ruby on Rails中將用戶設置分成多個頁面的最佳方法是什么?

[英]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 formgem

為了擴展@Navin的答案,在這種情況下(向控制器添加自定義[non-crud]動作),我建議像這樣設置路由:

namespace :settings do
  resources :user do
    member do
      get :security
      get :avatar
    end
  end
end

這將為您提供路徑:

  • 設置/用戶/:id /安全性
  • 設置/用戶/:id /頭像

如果您希望能夠從這些頁面修改其他用戶,則此方法效果很好。

如果僅希望能夠編輯已登錄用戶的屬性,則可能需要通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM