Ember Demo - Polymorphic BelongsTo (Serialized)
by pjmorse
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.min.js"></script>
<script src="http://builds.emberjs.com/canary/ember.js"></script>
<script src="http://builds.emberjs.com/canary/ember-data.js"></script>
<script type="text/x-handlebars">
<div class="container">
<h1>EmberJS Polymorphic belongsTo</h1>
{{#link-to "inventoryLedgers" class="btn btn-primary"}}
Inventory Ledgers
{{/link-to}}
</div>
{{outlet}}
</script>
<script type='text/x-handlebars' data-template-name="inventoryLedgers">
<div class='container'>
<h1>Inventory Ledgers</h1>
<div class="form-group">
{{#each}}
{{name}} - {{ledger.name}}<br />
{{/each}}
</div>
</div>
</script>
CSS
.well {margin-top:10px;}
CoffeeScript
# Initiate Ember App
App = window.App = Em.Application.create()
# Set the application adapter to AMS
App.ApplicationAdapter = DS.ActiveModelAdapter.extend()
# Router
App.Router.map ->
@resource 'inventoryLedgers'
# Models
App.InventoryLedger = DS.Model.extend
name: DS.attr 'string'
ledger: DS.belongsTo 'ledger', polymorphic: true
App.Movement = DS.Model.extend
name: DS.attr 'string'
App.Adjustment = DS.Model.extend
name: DS.attr 'string'
App.Ledger = DS.Model.extend
name: DS.attr "string"
# Routes
App.InventoryLedgersRoute = Em.Route.extend
model: ->
@store.find('inventoryLedger')
# Controllers
App.InventoryLedgersController = Em.ArrayController.extend()
# Serializers
App.InventoryLedgerSerializer = DS.ActiveModelSerializer.extend
normalize: (type, payload) ->
payload.ledger = payload.ledgerable_id
delete payload.ledgerable_id
payload.ledgerType = payload.ledgerable_type
delete payload.ledgerable_type
@_super(type, payload)
$.mockjax
url: '/inventory_ledgers'
response: (request) ->
@responseText =
inventory_ledgers: [
id: 1
name: 'Ledger 1'
ledgerable_id: 1
ledgerable_type: "movement"
,
id: 2
name: "Ledger 2"
ledgerable_id: 1
ledgerable_type: "adjustment"
]
$.mockjax
url: '/adjustments/1'
response: (request) ->
@responseText =
adjustments: [
id: 1
name: 'Adjustment Ledger 1'
]
$.mockjax
url: '/movements/1'
response: (request) ->
@responseText =
movements: [
id: 1
name: 'Movement Ledger 1'
]