Commit cd167c4
Changed files (9)
app
assets
javascripts
controllers
routes
templates
service
controllers
views
services
config
spec
controllers
app/assets/javascripts/controllers/service_edit.js.coffee
@@ -0,0 +1,15 @@
+App.ServiceEditController = Ember.ObjectController.extend
+ actions:
+ saveChanges: ->
+ if @get('model.isDirty')
+ @get('model').save().then => @transitionToRoute('service')
+ else
+ @transitionToRoute('service')
+
+ cancel: ->
+ @get('model').rollback()
+ @transitionToRoute('service')
+
+ showUnsavedMessage: (->
+ @get('isDirty') and !@get('isSaving')
+ ).property('isDirty', 'isSaving')
app/assets/javascripts/routes/service_edit.js.coffee
@@ -0,0 +1,3 @@
+App.ServiceEditRoute = Ember.Route.extend
+ activate: -> @controllerFor('service').set('isEditing', true)
+ deactivate: -> @controllerFor('service').set('isEditing', false)
app/assets/javascripts/templates/service/edit.hbs
@@ -0,0 +1,16 @@
+<h2><small>Edit</small> {{model.name}}</h2>
+
+<p>
+ <label for="">Name</label>
+ <br />
+ {{view Ember.TextField value=model.name}}
+</p>
+
+<input type="submit" value="Save" {{action 'saveChanges'}} />
+<a href="#"{{action 'cancel'}}>cancel</a>
+{{#if showUnsavedMessage}}
+ <p class="unsaved">unsaved changes</p>
+{{/if}}
+{{#if isSaving}}
+ <p class="saving">saving...</p>
+{{/if}}
app/assets/javascripts/templates/service.hbs
@@ -1,4 +1,5 @@
<h3>{{name}}</h3>
+{{#link-to 'service.edit' this}}edit{{/link-to}}
<a href="#" {{action "deleteService"}}>delete</a>
{{#link-to 'service.environments' this}}environments{{/link-to}}
app/assets/javascripts/router.js.coffee
@@ -11,6 +11,7 @@ App.Router.map ()->
@resource 'services', ->
@route 'new'
@resource 'service', { path: ':service_id' }, ->
+ @route 'edit'
@route 'environments', ->
@route 'new'
@resource 'environment', { path: ':environment_id' }
app/controllers/services_controller.rb
@@ -4,7 +4,12 @@ class ServicesController < ApplicationController
end
def create
- @service = Service.create!(application_params)
+ @service = Service.create!(service_params)
+ end
+
+ def update
+ @service = Service.find(params[:id])
+ @service.update!(service_params)
end
def destroy
@@ -14,7 +19,7 @@ class ServicesController < ApplicationController
private
- def application_params
+ def service_params
params.require(:service).permit(:name)
end
end
app/views/services/update.json.jbuilder
@@ -0,0 +1,3 @@
+json.service do
+ json.partial! @service, service: @service
+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 :services, only: [:index, :create, :destroy]
+ resources :services, only: [:index, :create, :update, :destroy]
resources :environments, only: [:index, :show, :create, :destroy]
get 'dashboard', to: 'dashboard#index'
spec/controllers/services_controller_spec.rb
@@ -34,4 +34,14 @@ describe ServicesController do
expect(Service.count).to eql(0)
end
end
+
+ describe "#update" do
+ let(:service) { create(:service) }
+
+ it 'updates the service' do
+ xhr :put, :update, id: service.id, service: { name: 'new name' }
+ service.reload
+ expect(service.name).to eql('new name')
+ end
+ end
end