添加 route/action 到 ActiveAdmin 基本控制器之一?
Add a route/action to one of ActiveAdmin base controllers?
我有一个搜索收集操作,我希望它可以被 ActiveAdmin 中的所有资源控制器访问和覆盖。使用以下代码在单个 Active Admin 资源中创建控制器操作很简单:
collection_action :autocomplete_user_last_name, method: :get
def autocomplete_user
term = params[:term]
users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name)
render json: users.map { |user|
{
id: user.id,
label: user.full_name,
value: user.full_name
}
}
end
但是我如何在 ActiveAdmin 基本控制器中创建类似的操作?在 Rails、ApplicationController
中,我们可以在其中创建路由、操作、辅助方法等,其行为与任何其他控制器一样,但是,我只希望将此操作限定在 Active Admin 范围内,而不是我的整个应用程序. ActiveAdmin 中是否有与 ApplicationController 等效的东西?
查看AA代码,我发现以下基本控制器是所有资源控制器的超级类:
ActiveAdmin::PageController
ActiveAdmin::BaseController
ActiveAdmin::ResourceController
但是,collection
和 member
操作未在这些 类 中定义。
我相信所有的 AA 资源控制器都继承自 `ActiveAdmin::ResourceController'。请在此处查看文档 Class: ActiveAdmin::ResourceController
我是靠记忆工作的,但我会先将您的控制器代码包装在 active_admin.rb
中,如下所示:
ActiveAdmin::ResourceController.class_eval do
collection_action :autocomplete_user_last_name, method: :get do
def autocomplete_user
term = params[:term]
users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name)
render json: users.map { |user|
{
id: user.id,
label: user.full_name,
value: user.full_name
}
}
end
end
end
我刚刚将 route/controller 操作的范围限定为特定资源。不确定 AA 的 API.
目前是否可以实现我的要求
我有一个搜索收集操作,我希望它可以被 ActiveAdmin 中的所有资源控制器访问和覆盖。使用以下代码在单个 Active Admin 资源中创建控制器操作很简单:
collection_action :autocomplete_user_last_name, method: :get
def autocomplete_user
term = params[:term]
users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name)
render json: users.map { |user|
{
id: user.id,
label: user.full_name,
value: user.full_name
}
}
end
但是我如何在 ActiveAdmin 基本控制器中创建类似的操作?在 Rails、ApplicationController
中,我们可以在其中创建路由、操作、辅助方法等,其行为与任何其他控制器一样,但是,我只希望将此操作限定在 Active Admin 范围内,而不是我的整个应用程序. ActiveAdmin 中是否有与 ApplicationController 等效的东西?
查看AA代码,我发现以下基本控制器是所有资源控制器的超级类:
ActiveAdmin::PageController
ActiveAdmin::BaseController
ActiveAdmin::ResourceController
但是,collection
和 member
操作未在这些 类 中定义。
我相信所有的 AA 资源控制器都继承自 `ActiveAdmin::ResourceController'。请在此处查看文档 Class: ActiveAdmin::ResourceController
我是靠记忆工作的,但我会先将您的控制器代码包装在 active_admin.rb
中,如下所示:
ActiveAdmin::ResourceController.class_eval do
collection_action :autocomplete_user_last_name, method: :get do
def autocomplete_user
term = params[:term]
users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name)
render json: users.map { |user|
{
id: user.id,
label: user.full_name,
value: user.full_name
}
}
end
end
end
我刚刚将 route/controller 操作的范围限定为特定资源。不确定 AA 的 API.
目前是否可以实现我的要求