diff --git a/lib/jbuilder/jbuilder_template.rb b/lib/jbuilder/jbuilder_template.rb index 1cf8cbed..2a81b1a7 100644 --- a/lib/jbuilder/jbuilder_template.rb +++ b/lib/jbuilder/jbuilder_template.rb @@ -104,7 +104,7 @@ def set!(name, object = BLANK, *args) private def _render_partial_with_options(options) - options.reverse_merge! locals: {} + options.reverse_merge! locals: options.except(:partial, :as, :collection) options.reverse_merge! ::JbuilderTemplate.template_lookup_options as = options[:as] diff --git a/test/jbuilder_template_test.rb b/test/jbuilder_template_test.rb index 7ec99d6a..dbb09013 100644 --- a/test/jbuilder_template_test.rb +++ b/test/jbuilder_template_test.rb @@ -44,7 +44,7 @@ def initialize(id, name) ActionView::Template.register_template_handler :jbuilder, JbuilderHandler PARTIALS = { - "_partial.json.jbuilder" => "foo ||= 'hello'; json.content foo", + "_partial.json.jbuilder" => "json.content foo", "_blog_post.json.jbuilder" => BLOG_POST_PARTIAL, "racers/_racer.json.jbuilder" => RACER_PARTIAL, "_collection.json.jbuilder" => COLLECTION_PARTIAL @@ -123,13 +123,13 @@ def assert_collection_rendered(result, context = nil) test "partial! renders partial" do result = jbuild(<<-JBUILDER) - json.partial! "partial" + json.partial! "partial", foo: 'hello' JBUILDER assert_equal "hello", result["content"] end - test "partial! + locals via :locals option" do + test "partial! + locals without :partial key with :locals key" do result = jbuild(<<-JBUILDER) json.partial! "partial", locals: { foo: "howdy" } JBUILDER @@ -137,9 +137,25 @@ def assert_collection_rendered(result, context = nil) assert_equal "howdy", result["content"] end - test "partial! + locals without :locals key" do + test "partial! + locals with :partial key with :locals key" do result = jbuild(<<-JBUILDER) - json.partial! "partial", foo: "goodbye" + json.partial! partial: "partial", locals: { foo: "goodbye" } + JBUILDER + + assert_equal "goodbye", result["content"] + end + + test "partial! + locals without :partial key without :locals key" do + result = jbuild(<<-JBUILDER) + json.partial! "partial", foo: "howdy" + JBUILDER + + assert_equal "howdy", result["content"] + end + + test "partial! + locals with :partial key without :locals key" do + result = jbuild(<<-JBUILDER) + json.partial! partial: "partial", foo: "goodbye" JBUILDER assert_equal "goodbye", result["content"]