Batman.js’s REST Storage Adapter provides a clean interface for operating on records with vanilla REST urls – but what about when you need a lil’ something more?
First of all, the magic happens in Batman.RestStorage#UrlForRecord. For an already-persisted record, you have a few options:
pass recordUrl
to loadWithOptions/findWithOptions
findWithOptions or loadWithOptions’s options
can take a recordUrl
param, which is used to retrieve the record. Use findWithOptions
to load a new record:
model_id = 1 # you might get this from the request path or from another model's attributes
model_url = "/some_models/#{model_id}?language=fr"
MyApp.SomeModel.findWithOptions model_id, {recordUrl: model_url}, (err, model) ->
# your model was loaded with the param language=fr!
or use loadWithOptions
to reload an existing record:
# using model from above...
model_url = "/some_models/#{model.get('id')}?language=es"
model.loadWithOptions {recordUrl: model_url}, (err, model) ->
# your model was loaded with the param language=es!
Set record.url
If you’re reloading an already-loaded model, you can set its (POJO) url
attribute to the URL you want to use:
model.url = "/#{model.constructor.storageKey}/#{model.get('id')}?language=zh"
model.load (err, model) ->
# your model was loaded with the param language=zh!
For a New Records or Collections?
I’m not sure yet. Check out Batman.RestStorage#UrlForCollection!