2014-01-25 46 views
0

REST風格的控制器我想這樣做:沒有模型

namespace :user do 

    namespace :builder do 
    resource :general_info, only: [:edit, :update] 
    resource :biography, only: [:edit, :update] 
    end 

    root to: 'profiles#edit_biography' 
end 

所以,我可以得到這些漂亮的REST風格的控制器:

general_info_controller 
biography_controller 

但可能壞主意來創建虛擬builder模型。

沒有它這些控制器給出一個錯誤:

ActiveRecord::Associations::Builder::BiographiesController 

回答

0

該模型僅由控制器執行訪問和任選的視圖,如果控制器將這樣的變量等@mymodel。寧靜來自控制器方法的接口行爲:索引,推,拉,創建等等,無論你想要什麼。路由機制非常強大和靈活,您可以自己重新創建「資源」路由的任何便利。

namespace :user do 
    namespace :builder do 
     get "edit" => "somecontroller#edit" 

......種類的東西。您決定如何實現編輯實現以及是否需要任何模型取決於您。您還可以控制使用渲染顯示的視圖。

是的,這違反了軌道約定,但是它們只是適用的慣例。並非每個問題都適合所有的默認設置。

http://guides.rubyonrails.org/routing.html

通常有資源映射到一個數據庫ID。他們會定義航線像

get ":id/edit" => "resourcecontroller#edit" 

目前尚不清楚你需要通過你的問題複製的模型資源路徑的程度。

+0

查看我對你的帖子的評論。 REST是一個http約定,並且沒有規定具體的實現或模式,當然也不需要Rails或任何Rails特定的約定。 REST是一種行爲,在Rails中,您在控制器中提供行爲。是的,通常會將一些行爲委託給模型,但這不是必需的。 –