【发布时间】:2015-08-05 17:50:05
【问题描述】:
我有一组基本的控制器和一组非常标准的 RESTful 方法。然后我有第二组控制器用于管理客户端微型站点。第二组控制器几乎与基本组相同,只是每个响应 HTML 的方法都需要定义一个额外的实例变量来表示微站点的 id(基本控制器不可用)。
这意味着我在我的应用程序中重复了我的代码两次,这不是很容易维护,尤其是对于具有许多控制器的大型应用程序。有没有办法告诉控制器继承一个方法,然后在继承的方法中插入一个额外的变量或其他逻辑?
例如,如果我在下面有一个 UsersController:
class UsersController < ApplicationController
def index
end
end
然后我有 Clients::UsersController
class Clients::UsersController < UsersController
def index
@client_id = params[:id]
end
end
我怎样才能干掉 Clients::UsersController?
【问题讨论】:
-
很难告诉你任何有用的信息,因为你已经省略了所有相关的代码。此时,我们可以建议“将
lots of flow control放入一个方法中”,仅此而已。 -
代码不是很相关。这不是关于特定代码的问题。这是一个关于设计模式的问题。我可以发布我的控制器的所有代码,但其中 99% 与问题无关,这就是我选择通用示例的原因。
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 inheritance model-view-controller