Commit 3cc9bca
Changed files (9)
app
assets
javascripts
controllers
models
controllers
views
applications
config
spec
controllers
app/assets/javascripts/controllers/applications_new.js.coffee
@@ -0,0 +1,10 @@
+App.ApplicationsNewController = Ember.Controller.extend
+ actions:
+ createApplication: ->
+ fields = @get('fields')
+ if App.Application.valid(fields)
+ application = @store.createRecord('application', @get('fields'))
+ application.save().then =>
+ @transitionTo('application', application)
+ else
+ @set('showError', true)
app/assets/javascripts/models/application.js.coffee
@@ -1,2 +1,6 @@
App.Application = DS.Model.extend
name: DS.attr('string')
+
+App.Application.reopenClass
+ valid: (fields) ->
+ fields.name
app/assets/javascripts/routes/applications_new_route.js.coffee
@@ -0,0 +1,4 @@
+App.ApplicationsNewRoute = Ember.Route.extend
+ setupController: (controller) ->
+ controller.set('fields', {})
+ controller.set('showError', false)
app/assets/javascripts/templates/applications/new.hbs
@@ -0,0 +1,14 @@
+<h1>New Application</h1>
+{{#if showError}}
+<p>Application must have a name.</p>
+{{/if}}
+<form>
+<fieldset>
+ <dl>
+ <dt><label>Name:</label></dt>
+ <dd>{{view Ember.TextField value=fields.name}}</dd>
+ </dl>
+</fieldset>
+</form>
+
+<input type="submit" value="Create" {{action 'createApplication'}} />
app/assets/javascripts/templates/videos/new.hbs
@@ -15,6 +15,7 @@
<dl>
<dt><label>Description:</label></dt>
<dd>{{view Ember.TextArea value=fields.description}}</dl>
+ </dl>
</fieldset>
</form>
app/controllers/applications_controller.rb
@@ -2,4 +2,15 @@ class ApplicationsController < ApplicationController
def index
@applications = Application.all
end
+
+ def create
+ Application.create!(application_params)
+ render nothing: true
+ end
+
+ private
+
+ def application_params
+ params.require(:application).permit(:name)
+ end
end
app/views/applications/index.json.jbuilder
@@ -1,4 +1,4 @@
json.applications @applications do |application|
json.id application.id
- json.title application.title
+ json.name application.name
end
config/routes.rb
@@ -1,7 +1,7 @@
Erkell::Application.routes.draw do
resources :sessions, only: [:new, :create, :destroy]
resources :videos, only: [:index, :create, :update, :destroy]
- resources :applications, only: [:index]
+ resources :applications, only: [:index, :create]
get 'dashboard', to: 'dashboard#index'
root 'dashboard#index'
# The priority is based upon order of creation: first created -> highest priority.
spec/controllers/applications_controller_spec.rb
@@ -16,4 +16,13 @@ describe ApplicationsController do
expect(assigns(:applications)).to include(application)
end
end
+
+ describe "#create" do
+ it 'creates a new application' do
+ xhr :post, :create, application: { name: 'blah' }
+
+ expect(Application.count).to eql(1)
+ expect(Application.last.name).to eql('blah')
+ end
+ end
end