diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index cd03d2d25467..0a40cedd8a2e 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -285,7 +285,8 @@ angular.module('ngResource', ['ng']). params = params || {}; forEach(this.urlParams, function(_, urlParam){ - if (val = (params[urlParam] || self.defaults[urlParam])) { + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (isDefined(val) && val !== null) { encodedVal = encodeUriSegment(val); url = url.replace(new RegExp(":" + urlParam + "(\\W)", "g"), encodedVal + "$1"); } else { diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 37a8d568716f..dc837f8030b2 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -51,14 +51,22 @@ describe("resource", function() { it('should ignore slashes of undefinend parameters', function() { var R = $resource('/Path/:a/:b/:c'); - $httpBackend.when('GET').respond('{}'); - $httpBackend.expect('GET', '/Path'); - $httpBackend.expect('GET', '/Path/1'); - $httpBackend.expect('GET', '/Path/2/3'); - $httpBackend.expect('GET', '/Path/4/5'); - $httpBackend.expect('GET', '/Path/6/7/8'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/0').respond('{}'); + $httpBackend.when('GET', '/Path/false').respond('{}'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/').respond('{}'); + $httpBackend.when('GET', '/Path/1').respond('{}'); + $httpBackend.when('GET', '/Path/2/3').respond('{}'); + $httpBackend.when('GET', '/Path/4/5').respond('{}'); + $httpBackend.when('GET', '/Path/6/7/8').respond('{}'); R.get({}); + R.get({a:0}); + R.get({a:false}); + R.get({a:null}); + R.get({a:undefined}); + R.get({a:''}); R.get({a:1}); R.get({a:2, b:3}); R.get({a:4, c:5});