From 25cd6f17aec07403e4c9fb2580d27fae521947f7 Mon Sep 17 00:00:00 2001 From: "Max F. Albrecht" <1@178.is> Date: Mon, 21 Jul 2014 17:07:55 +0200 Subject: [PATCH] remove internally used properties before server render (also adds a test for spilling the internal properties to the DOM) --- lib/react/rails/view_helper.rb | 7 +++++-- test/view_helper_test.rb | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/react/rails/view_helper.rb b/lib/react/rails/view_helper.rb index 972cd2fed..d7fbba015 100644 --- a/lib/react/rails/view_helper.rb +++ b/lib/react/rails/view_helper.rb @@ -15,8 +15,11 @@ def react_component(name, args = {}, options = {}, &block) data[:react_class] = name data[:react_props] = args.to_json unless args.empty? end - html_tag = html_options.delete(:tag) || :div - + html_tag = html_options[:tag] || :div + + # remove internally used properties so they aren't rendered to DOM + [:tag, :prerender].each{|prop| html_options.delete(prop)} + content_tag(html_tag, '', html_options, &block) end diff --git a/test/view_helper_test.rb b/test/view_helper_test.rb index e80796de0..29f18357e 100644 --- a/test/view_helper_test.rb +++ b/test/view_helper_test.rb @@ -83,4 +83,10 @@ class ViewHelperTest < ActionDispatch::IntegrationTest assert_match /data-react-checksum/, page.html assert_match /yep/, page.find("#status").text end + + test 'react server rendering does not include internal properties' do + visit '/server/1' + assert_no_match /tag=/, page.html + assert_no_match /prerender=/, page.html + end end