Como criar uma seção customizada para RailsAdmin Engine

As seções descrevem diferentes visualizações no mecanismo RailsAdmin.
Eles são muito úteis se você estiver escrevendo uma ação personalizada reutilizável.

O objeto de classe de cada seção pode armazenar configuração genérica sobre aquela seção (como o número de guias visíveis na navegação principal), enquanto as instâncias (acessadas por meio de objetos de configuração do modelo) armazenam configuração específica do modelo (como a visibilidade do modelo).

Com as seguintes linhas, você pode escrever facilmente a configuração CustomAction (também conhecida como Seção):

require 'rails_admin/config/sections/base'

module RailsAdmin
module Config
module Sections
# Configuration of the clone action
class SampleSection < RailsAdmin::Config::Sections::Base

register_instance_option
:sample_conf do
nil # set a default value here
end

register_instance_option
:another_sample_conf do
nil # set a default value here
end

end
end
end
end

Portanto, você pode especificar as configurações personalizadas no inicializador de configuração rails_admin:

RailsAdmin.config do |config|
config
.model 'Team' do
sample_section
do
custom_method
:some_value

another_sample_conf
do
bindings
[:object].do_something!
end
end
end
end

Cada valor de sua seção pode ser recuperado com o objeto model_config em sua ação personalizada.
Por exemplo:

require 'rails_admin/config/actions'
require
'rails_admin/config/actions/base'

module RailsAdmin
module Config
module Actions
class SampleCustomAction < Base
RailsAdmin::Config::Actions.register(self)

register_instance_option
:controller do
Proc.new do
# retrieve configuration:
model_config
.sample_section.sample_conf
model_config
.sample_section.another_sample_conf

# do something...

respond_to
do |format|
format
.html { render @action.template_name }
format
.js { render @action.template_name, :layout => false }
end

end
end
end
end
end
end

Nota importante:

Quando você define uma seção personalizada, ela deve ser inicializada antes de rails_admin para funcionar corretamente. Portanto, em seu Gemfile você deve definir rails_admin após sua gem de ação personalizada.

gem 'rails_admin_custom_action'
gem
'rails_admin'