2012-08-28 46 views
2

我有一個模型用戶和相應的UsersController。由於項目更改,用戶模型的相同功能需要位於CentersController中,當然只有中心的其他功能。 UsersController保持原樣。Rails:同一型號的兩個控制器

設計問題是如何使用UsersController方法(更新,編輯,創建等),而無需在CentersController中複製它們?例如,當用戶在中心的視圖中更新時,用戶控制器的更新操作將被調用,但查看器應該重定向回中心視圖。

回答

2

這是模塊或「mixin」的用途。將常用方法放在模塊中,並將該模塊包含到UsersControllerCentersController中。

module Foo 
    def bar 
    end 
end 

class UsersController < ApplicationController 
    include Foo 
end 

class CentersController < ApplicationController 
    include Foo 
end 

或者,把你的公共代碼的控制器,並從該控制器繼承:

class FooController < ApplicationController 
    def bar 
    end 
end 

class UsersController < FooController 
end 

class CentersController < FooController 
end 
+1

感謝您的答覆。我正朝着提出的解決方案前進,但我真正需要更改的是UsersController中的redirect_to語句:如果Center視圖啓動this,它將是center_path,而不是users_path。是否還有另外一種推薦的(即RESTful)方式使用路由或助手? – RailinginDFW