Ruby on rails Rails基本控制器通用参数
A为我的管理命名空间提供一个基本控制器Ruby on rails Rails基本控制器通用参数,ruby-on-rails,controller,Ruby On Rails,Controller,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 class Admin:
class Admin::AdminController < ApplicationController
def update
entity = @source.find(params[:id])
close_popup entity.update_attributes(params[@param_name])? {return_url => @url}:{}
end
...
end
class Admin::AdminController@url}:{}
结束
...
结束
我所有的管理员控制器都来自AdminController,例如:
class Admin::ProductsController < Admin::AdminController
@source = Admin::Product
@url = admin_products_url
@param_name = :admin_product
end
class Admin::ProductsController
现在,我的问题是如何避免在驱动类中设置这些参数。为此,我需要从基本控制器本身知道
谢谢如果您确定所有这些控制器都将采用您提到的格式,您可以执行以下操作: 在名为
set\u default\u parmas的class Admin::AdminController
中定义一个before\u filter
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
class Admin::AdminController
所用方法的参考:
,并且我编辑了答案,以便@url
将拥有您想要的路线(使用self.send
)。哪一行给了您资源\u名称未定义
?