Grails is pretty powerful, and lets you turn your Domain objects into JSON with a single statement (object as JSON
). Unfortunately, this is not sufficient to interact with Ember.js for a few reasons.
How can I make Grails play nicely with Ember.js?
Good question, self!
Ember.js, and its auto-AJAX-in-browser-data-store ninjitsu expect the URL to look a certain way, and the JSON to look a certain way. Due to the way that each tool works, it's easier to make conforming changes to both sides of the equation!
For a Domain class MyCoolDomainClass
with a controller MyCoolDomainClassController
, Grails wants to provide the URL /app/myCoolDomainClass
. If you set up the controller to contain something along the lines of:
def index() { render MyCoolDomainClass.list() as JSON }
You'll get a response that looks like:
[{ id: 1, name: "Bob"}, {id: 2, name: "Sally"}]
In Ember.js, you might create a Model with the same properties. By leveraging ember-data
, you can easily hook up the Data Store in the browser with your backend. Unfortunately, what Ember.js wants is different. It expects the the url /my_cool_domain_class
to provide the data:
{ mycooldomainclass: [ { id: 1, name: "Bob"}, {id: 2, name "Sally"}] }
UPDATE: I've created a ember-data-grails
repo on Github which takes care of all of these modifications for you, and demonstrates how to make a controller that plays along nicely!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With