Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Emberjs

 Emberjs

Building an Ember App with Ruby on Rails Part 1

Avatar for Artur Kremens

Artur Kremens

October 20, 2014
Tweet

Other Decks in Programming

Transcript

  1. What do we need? • gem 'ember-rails' • gem 'bower-rails'

    • gem 'emblem-rails' • http://www.ember-cli.com/
  2. Bower - js package manager • Using with RoR ◦

    Bowerfile ◦ initializer ◦ install assets rake bower:install (!) • Package manager ◦ http://bower.io
  3. Getting started • Application structure • Application root element EmberApp

    = Ember.Application.create({ rootElement: '#ember-application-holder' })
  4. Router • Application route • Index route • Routes extend

    EmberApp.Router.map -> @resource 'page', path: '/', -> @resource 'users', path: '/users', -> @route 'show', path: ':id'
  5. Naming conventions • Router: ◦ AppName.PageRoute ◦ page_route.js.coffee • Controller:

    ◦ AppName.PageController ◦ page_controller.js.coffee • View: ◦ AppName.PageView ◦ page_view.js.coffee • Template: page.emblem
  6. Outlets • Application template {{outlet}} • {{outlet name}} Render template

    • @render 'users', {into: 'application'} • @render 'users', {into: 'application', outlet: 'modal'} • @render 'users', {into: 'page', outlet: 'page', controller: controller}
  7. Model • Router set model model: (params) -> AppName.ModelName.find(params.id) •

    Class methods AppName.ModelName.reopenClass find: (id = null) -> ...
  8. View • actions and events • classNames ◦ classNameBinding •

    tagName • template ◦ templateName ◦ template : Ember.Handlebars.compile('content')
  9. • binding • collection ◦ each controller.model div {{name}} ◦

    each controller.model {{component-name nameInComponent=name}} ◦ {{view Ember.CollectionView contentBinding='data' itemViewClass='viewName'}} Templates
  10. Computed properties • Depends on id and name isFirst: (->

    @get('id') == 1 && (@get('id') == 'Artur') ).property('id', 'name') • Ember.computed.not('isFirst')