Module: Shiboru::Controller
- Defined in:
- lib/shiboru/controller.rb
Instance Method Summary collapse
-
#api_index(model, params, serializer: nil, serializer_opts: {}) ⇒ Object
Usage: render json: api_index(User, params, serializer: UserSerializer).
Instance Method Details
#api_index(model, params, serializer: nil, serializer_opts: {}) ⇒ Object
Usage: render json: api_index(User, params, serializer: UserSerializer)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/shiboru/controller.rb', line 6 def api_index(model, params, serializer: nil, serializer_opts: {}) filter_klass = Shiboru::Registry.for_model(model) raise ArgumentError, "No FilterSet found for #{model.name} (expected #{model.name}Filter)" unless filter_klass payload = filter_klass.new(model.all, params).call records = payload["results"] payload["results"] = if serializer ActiveModelSerializers::SerializableResource.new(records, each_serializer: serializer, **serializer_opts).as_json else records.as_json end payload end |