Exercise C: Models and Find All

We are going to develop a simple view, render a list of objects with ember data and ember mirage.

1.- In out application we have to create a model:

ember generate model invite

2.- Add some attributes

import DS from 'ember-data';

export default DS.Model.extend({
  user: DS.attr('string'),
  dateCreated: DS.attr('date'),
  status: DS.attr('string')
});

3.- Go to your route invite-modules/show-invites.js

import Route from '@ember/routing/route';

export default Route.extend({


  model(){

      return this.get('store').findAll('invite');

  }


});

At this point we have a model invite, and in route show-invites we are going to get all invites.

And you will have a GET request for find all invites:

Request URL:http://localhost:4200/invites
Request Method:GET
Status Code:404 Not Found
Remote Address:[::1]:4200
Referrer Policy:no-referrer-when-downgrade

We have to install the ember-mirage and add a fixture for respond to/invites

For install ember mirage:

ember install ember-cli-mirage

Create a fixture called invites

ember generate mirage-fixture invites

mirage/fixtures/users.js

export default [
  {id:1, user:"fake user 1", dateCreated:1519283297836, status:"invited"},
  {id:2, user:"fake user 2", dateCreated:1519283297836, status:"canceled"},
  {id:3, user:"fake user 3", dateCreated:1519283297836, status:"reinvited"},
  {id:4, user:"fake user 4", dateCreated:1519283297836, status:"invited"},
  {id:5, user:"fake user 5", dateCreated:1519283297836, status:"reinvited"},
  {id:6, user:"fake user 6", dateCreated:1519283297836, status:"invited"},
  {id:7, user:"fake user 7", dateCreated:1519283297836, status:"answered"},
  {id:8, user:"fake user 8", dateCreated:1519283297836, status:"answered"},
  {id:9, user:"fake user 9", dateCreated:1519283297836, status:"invited"},
  {id:10, user:"fake user 10", dateCreated:1519283297836, status:"answered"}
];

This list of fixtures correspond to your model invite

Then, we have to load the fixture, add a Rest serializer, and add in mirage config.

mirage/scenarios/default.js

export default function( server ) {

  server.loadFixtures('invites');
  server.loadFixtures('users');

}

mirage/serializers/application.js

import { RestSerializer } from 'ember-cli-mirage';

export default RestSerializer.extend({
});

mirage/config.js

export default function() {

  this.get('/invites');

}

Now we are getting all invites models in invite-modules/show-invites.js route.

We can use handlebars for show this model.

<div class="text-center">
  <br><h2> Invites </h2>
  <p>We are going to show all invites.</p><br>
</div>

<div class="row">
  <div class="col-md-6 offset-md-3">
    <table class="table table-sm table-hover">
      <thead>
        <tr>
          <th scope="col">User Invited</th>
          <th scope="col">Date</th>
          <th scope="col">Status</th>
        </tr>
      </thead>
      <tbody>
        {{#each model as |invite|}}
        <tr>
          <td> {{invite.user}} </td>
          <td> {{invite.dateCreated}} </td>
          <td> {{invite.status}} </td>
        </tr>
        {{/each}}
      </tbody>
    </table>
  </div>
</div>

Model is the result returning in model () hook.

results matching ""

    No results matching ""