@@ -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
81102end
0 commit comments