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'