Skip to content

Commit e44c9d8

Browse files
committed
Make sprockets renderer pass all arguments to the callbacks almost untouched
1 parent 05ef277 commit e44c9d8

File tree

1 file changed

+33
-12
lines changed

1 file changed

+33
-12
lines changed

lib/react/server_rendering/sprockets_renderer.rb

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,14 @@ def initialize(options={})
2828
super(options.merge(code: js_code))
2929
end
3030

31+
# Prerender options are expected to be a Hash however might also be a symbol.
32+
# pass prerender: :static to use renderToStaticMarkup
33+
# pass prerender: true to enable default prerender
34+
# pass prerender: {} to proxy some custom options
3135
def render(component_name, props, prerender_options)
32-
# pass prerender: :static to use renderToStaticMarkup
33-
react_render_method = if prerender_options == :static
34-
"renderToStaticMarkup"
35-
else
36-
"renderToString"
37-
end
38-
39-
if !props.is_a?(String)
40-
props = props.to_json
41-
end
42-
43-
super(component_name, props, {render_function: react_render_method})
36+
t_options = prepare_options(prerender_options)
37+
t_props = prepare_props(props)
38+
super(component_name, t_props, t_options)
4439
end
4540

4641
def after_render(component_name, props, prerender_options)
@@ -76,6 +71,32 @@ def asset_container
7671
def assets_precompiled?
7772
!::Rails.application.config.assets.compile
7873
end
74+
75+
private
76+
77+
def prepare_options(options)
78+
r_func = render_function(options)
79+
opts = case options
80+
when Hash then options
81+
when TrueClass then {}
82+
else
83+
{}
84+
end
85+
# This seems redundant to pass
86+
opts.merge(render_function: r_func)
87+
end
88+
89+
def render_function(opts)
90+
if opts == :static
91+
'renderToStaticMarkup'.freeze
92+
else
93+
'renderToString'.freeze
94+
end
95+
end
96+
97+
def prepare_props(props)
98+
props.is_a?(String) ? props : props.to_json
99+
end
79100
end
80101
end
81102
end

0 commit comments

Comments
 (0)