Module: Jbuilder
- Defined in:
- lib/jbuilder/serializer.rb,
lib/jbuilder/serializer/version.rb
Overview
Wraps jbuilder into a serializer class, so it can be used outside of a controller action.
Usage
Create a serializer and define the `template_path` and `locals` for jbuilder view.
# app/serializers/order_create_serializer.rb
class OrderCreateSerializer < Jbuilder::Serializer
set_template_path File.('views', __dir__)
locals do |attrs|
@order = attrs[:order]
= attrs[:user]
@items = @order.items.select &:active?
end
end
Create your jbuilder view file and place it on the folder specified through `template_path`.
# app/serializers/views/order_create.json.jbuilder
json.order do
json.created_by .username
json.id @order.id
json.items @items do |item|
json.id item.id
json.quantity item.quantity
end
end
Then instantiate the serializer, providing its args for `locals` assignment.
serializer = OrderCreateSerializer.new(order: @order, user: current_user)
serializer.to_json
=> "{\"order\": {\"created_by\": \"donald-duck\", \"id\":34, \"items\": [{\"id\": 78, \"quantity\": 1},{\"id\": 94, \"quantity\": 3}]}}"
Defined Under Namespace
Classes: Serializer