Ruby on rails Rails基本控制器通用参数

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:

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::AdminController@url}:{}
结束
...
结束
我所有的管理员控制器都来自AdminController,例如:

class Admin::ProductsController < Admin::AdminController
  @source = Admin::Product
  @url = admin_products_url
  @param_name = :admin_product
end
class Admin::ProductsController
现在,我的问题是如何避免在驱动类中设置这些参数。为此,我需要从基本控制器本身知道

  • 它和什么脚手架有关。(@来源)
  • 列出实体的url(@url)
  • 参数名称来自与实体关联的POST(@param_name)

  • 谢谢

    如果您确定所有这些控制器都将采用您提到的格式,您可以执行以下操作:

    在名为
    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名称未定义