Skip to content

Commit fd15c93

Browse files
committed
Add hook for default exposures.
1 parent 0cfadb5 commit fd15c93

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

lib/jsonapi/rails/action_controller.rb

+6
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ def deserializable_resource(key, options = {}, &block)
4242
end
4343
end
4444

45+
def jsonapi_expose
46+
{
47+
url_helpers: ::Rails.application.routes.url_helpers
48+
}
49+
end
50+
4551
def jsonapi_pagination(_collection)
4652
nil
4753
end

lib/jsonapi/rails/railtie.rb

+3-4
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,17 @@ class Railtie < ::Rails::Railtie
3030
::ActionController::Renderers.add(:jsonapi) do |resources, options|
3131
self.content_type ||= Mime[:jsonapi]
3232

33-
# Renderer proc is evaluated in the controller context, so it
34-
# has access to the jsonapi_pagination method.
33+
# Renderer proc is evaluated in the controller context.
3534
if (pagination_links = jsonapi_pagination(resources))
3635
(options[:links] ||= {}).merge!(pagination_links)
3736
end
37+
options[:expose] = jsonapi_expose.merge!(options[:expose] || {})
3838

3939
RENDERERS[:jsonapi].render(resources, options).to_json
4040
end
4141

4242
::ActionController::Renderers.add(:jsonapi_error) do |errors, options|
43-
# Renderer proc is evaluated in the controller context, so it
44-
# has access to the jsonapi_pointers method.
43+
# Renderer proc is evaluated in the controller context.
4544
options = options.merge(_jsonapi_pointers: jsonapi_pointers)
4645
self.content_type ||= Mime[:jsonapi]
4746

lib/jsonapi/rails/renderer.rb

-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ def initialize(renderer = JSONAPI::Serializable::SuccessRenderer.new)
1111

1212
def render(resources, options)
1313
opts = options.dup
14-
# TODO(beauby): Move this to a global configuration.
15-
default_exposures = {
16-
url_helpers: ::Rails.application.routes.url_helpers
17-
}
18-
opts[:expose] = default_exposures.merge!(opts[:expose] || {})
1914
opts[:jsonapi] = opts.delete(:jsonapi_object)
2015

2116
@renderer.render(resources, opts)

0 commit comments

Comments
 (0)