【问题标题】:Rails: two controllers for the same modelRails:同一模型的两个控制器
【发布时间】:2012-08-28 16:38:56
【问题描述】:

我有一个模型用户和一个相应的用户控制器。由于项目的变化,用户模型的相同、精确的功能需要在 CentersController 中,当然只有 Centers 的附加功能。 UsersController 保持原样。

设计问题是如何使用 UsersController 方法(更新、编辑、创建等)而不在 CentersController 中复制它们?例如,当用户在 Centers 视图中更新时,将调用 User 控制器的 Update 操作,但应将查看器重定向回 Centers 视图。

【问题讨论】:

    标签: ruby-on-rails ruby model-view-controller


    【解决方案1】:

    这就是模块或“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
    

    【讨论】:

    • 感谢您的回复。我正朝着建议的解决方案前进,但我真正需要更改的是 UsersController 中的 redirect_to 语句:而不是 users_path,如果中心视图启动它,它将是 center_path。是否有另一种使用路由或助手的推荐(即 RESTful)方式?
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多