1つの Shop のなかに複数の Shelf がありその中に Item が格納されているケースを想定しています。
ngResourceを使ってjsonでレンダリングされた "/api/shops/:shop_id/shelfs/:shelf_id/items/:id" を呼び出して、データベースに item を追加しようとしています。

《controller》shop_edit.coffee

angular.module("myApp").controller "shopEdit", ($scope, Shop, Shelf, Item) ->

  $scope.init = ->
    # Rails側でパラメータを取得してng-initからshop_idを設定
    shop_id = $scope.shop_id
    # Shopを取得
    Article.get(id: shop_id).$promise.then (shop) ->
      $scope.shop = shop
    return

  $scope.saveItem = (shop, shelf) ->
    # 保存
    $scope.newItem = { name: shelf.item.name, shop_id: shop.id, shelf_id: shelf.id }
    Item.save($scope.newItem)
    $scope.newItem = newItem
    return

《view》edit.html.slim

(一部抜粋)
.item
  input name="name" ng-model="shelf.item.name" ng-blur="saveItem(shop, shelf)"

《service》shop.coffee

angular.module('myApp').factory 'Shop', ($resource) ->
  $resource('/api/shops/:id', { id: @id }, { update: { method: 'PUT' }})

《service》item.coffee

angular.module('myApp').factory 'Item', ($resource) ->
  $resource('/api/shops/:shop_id/shelfs/:shelf_id/items/:id',
    { shop_id: '13495' },
    { shelf_id: '93' },
    { update: { method: 'PUT' }})

このとき、動的な値 shop_id と shelf_id をcontorollerから受け取れずに困っています。
$scope.newItem = { ... } の中で shop_id と item_id を指定し、Item.save($scope.newItem) で service 側に渡しているのですが正しく受け取れないようで困ってます(:shop_id, :shelf_id が空欄になり保存に失敗しています)。

また、なぜか、以下のように :shelf_id を :shop_id に置き換えないと正しく保存されません...

$resource('/api/shops/:shop_id/shelfs/:shop_id/items/:id',
  { shop_id: '13495' },
  { update: { method: 'PUT' }})

原因が検討もつかず困っています... どうかよろしくお願いいたします。