Skip to content

Instantly share code, notes, and snippets.

@rldleblanc
Last active February 1, 2017 18:28
Show Gist options
  • Save rldleblanc/51ca0e930d8de3bc74bfcd86907d56bc to your computer and use it in GitHub Desktop.
Save rldleblanc/51ca0e930d8de3bc74bfcd86907d56bc to your computer and use it in GitHub Desktop.
Cookbook
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api/v1',
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
export default function() {
this.namespace = '/api/v1';
this.get('/categories');
this.get('/categories/:id');
this.get('/recipes', (schema, request) => {
if (request.queryParams.category !== undefined) {
return schema.recipes.where({ category: request.queryParams.category });
} else {
return schema.recipes.all();
}
});
this.get('/recipes/:id');
}
export default [
{
id: 'main-dishes',
title: 'Main Dishes',
},
];
export default [
{
id: 'baked-macaroni-and-cheese',
title: 'Baked Macaroni & Cheese',
category: 'main-dishes',
},
];
import { Model, hasMany } from 'ember-cli-mirage';
export default Model.extend({
recipes: hasMany('recipe'),
});
import { Model, belongsTo } from 'ember-cli-mirage';
export default Model.extend({
category: belongsTo('categories'),
});
export default function(server) {
server.loadFixtures();
}
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
title: DS.attr(),
recipes: DS.hasMany('recipe'),
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
import { belongsTo, hasMany } from "ember-data/relationships";
export default Model.extend({
title: DS.attr(),
category: DS.belongsTo('category'),
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('category', function() {
this.route('show', { path: '/:category_id' });
});
this.route('recipe', function() {
this.route('show', { path: '/:recipe_id' });
});
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.get('store').findAll('category');
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.get('store').query('recipe', { category: params.category_id});
}
});
{{#link-to 'category'}}Categories{{/link-to}}
<hr>
{{outlet}}
<ul>
{{#each model as |item|}}
<li>
{{#link-to 'category.show' item.id}}
{{item.title}}
{{/link-to}}
</li>
{{/each}}
</ul>
<ul>
{{#each model as |item|}}
<li>
{{#link-to 'recipe.show' item.id}}
{{item.title}}
{{/link-to}}
</li>
{{/each}}
</ul>
{
"version": "0.11.0",
"ENV": {
"ember-cli-mirage": {
"enabled": true
}
},
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.10.2",
"ember-data": "2.11.0",
"ember-template-compiler": "2.10.2",
"ember-testing": "2.10.2"
},
"addons": {
"ember-cli-mirage": "0.3.0-beta.4"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment