A具有我的管理员命名空间的基本控制器
class Admin::AdminController < ApplicationController
def update
entity = @source.find(params[:id])
close_popup entity.update_attributes(params[@param_name])? {return_url => @url}:{}
end
...
end
我的所有管理员控制器都来自AdminController,例如:
class Admin::ProductsController < Admin::AdminController
@source = Admin::Product
@url = admin_products_url
@param_name = :admin_product
end
现在,我的问题是如何避免在这些类别中设置这些参数。为此我需要从基本控制器本身知道
由于
答案 0 :(得分:2)
如果您确定所有这些控制器都采用您提到的格式,那么您可以执行以下操作:
在名为before_filter
class Admin::AdminController
中定义set_default_parmas
class Admin::AdminController < ApplicationController
before_filter :set_default_params
def set_default_params
resource_name = controller_name.singularize
@source = "Admin::#{resource_name.camelize}".constantize
@url = self.send("admin_#{controller_name}_url")
@param_name = "admin_#{resource_name}".to_sym
end
end
对使用过的方法的引用: singularize,constantize,camelize和controller_name