module ActiveAdmin::SearchableSelect::ResourceDSLExtension
Mixin for ActiveAdmin
resource DSL
Public Instance Methods
searchable_select_options(name: :all, **options)
click to toggle source
Define a collection action to serve options JSON data for searchable selects.
@param scope [ActiveRecord::Relation, Proc] Either a
collection of records to create options for or a proc returning such a collection. Procs are evaluated in the context of the collection action defined by this method. Procs can optionally take a single `params` argument containing data defined under the `params` key of the input's `ajax` option. Required.
@param text_attribute [Symbol] Name of attribute to use as
display name and to filter by search term.
@param display_text [Proc] Takes the record as
parameter. Required if `text_attribute` is not present.
@param filter [Proc] Takes the search term and an Active
Record scope as parameters and needs to return a scope of filtered records. Required if `text_attribute` is not present.
@param name [Symbol] Optional collection name if helper is
used multiple times within one resource.
@param additional_payload [Proc]
Adds additional attributes to the results array
@example
ActiveAdmin.register Tag do searchable_select_options( scope: Color, text_attributes: :title, additional_payload: lambda { |record| { color: record.color } } ) end
@json {
"results": [{ "id": "1", "text": "Red", "color": "#FFF" }], "pagination": { "more": "false" }
}
# File lib/activeadmin/searchable_select/resource_dsl_extension.rb, line 46 def searchable_select_options(name: :all, **options) option_collection = OptionCollection.new(name, options) config.searchable_select_option_collections[name] = option_collection collection_action(option_collection.collection_action_name) do render(json: option_collection.as_json(self, params)) end end