Custom view types
By default, Avo displays all the configured view types on the view switcher. For example, if you have map_view and grid_view configured, both of them, along with the table_view, will be available on the view switcher.
However, there might be cases where you only want to make a specific view type available without removing the configurations for other view types. This can be achieved using the view_types class attribute on the resource. Note that when only one view type is available, the view switcher will not be displayed.
class Avo::Resources::City < Avo::BaseResource
# ...
self.view_types = :table
#...
endIf you want to make multiple view types available, you can use an array. The icons on the view switcher will follow the order in which they are declared in the configuration.
class Avo::Resources::City < Avo::BaseResource
# ...
self.view_types = [:table, :grid]
#...
endYou can also dynamically restrict the view types based on user roles, params, or other business logic. To do this, assign a block to the view_types attribute. Within the block, you'll have access to resource, record, params, current_user, and other default accessors provided by ExecutionContext.
class Avo::Resources::City < Avo::BaseResource
# ...
self.view_types = -> do
if current_user.is_admin?
[:table, :grid]
else
:table
end
end
#...
end
Friendly.rb - Your friendly European Ruby Conference