diff --git a/lib/roar/representer/feature/hypermedia.rb b/lib/roar/representer/feature/hypermedia.rb index 949b2d7d..040737de 100644 --- a/lib/roar/representer/feature/hypermedia.rb +++ b/lib/roar/representer/feature/hypermedia.rb @@ -44,7 +44,7 @@ def prepare_links! links_def.rel2block.each do |config| # config is [{..}, block] options = config.first - options[:href] = run_link_block(config.last) + options[:href] = run_link_block(config.last) or next links.update_link(Feature::Hypermedia::Hyperlink.new(options)) end diff --git a/test/json_representer_test.rb b/test/json_representer_test.rb index 13ab3ea1..57bf8124 100644 --- a/test/json_representer_test.rb +++ b/test/json_representer_test.rb @@ -120,6 +120,17 @@ class JsonHypermediaTest it "renders link: correctly in JSON" do assert_equal "{\"id\":1,\"links\":[{\"rel\":\"self\",\"href\":\"http://self\"},{\"rel\":\"next\",\"href\":\"http://next/1\"}]}", @c.new(:id => 1).to_json end + + it "doesn't render links when empty" do + assert_equal("{\"links\":[]}", Class.new do + include Roar::Representer::JSON + include Roar::Representer::Feature::Hypermedia + + link :self do nil end + link :next do false end + end.new.to_json) + end + end end