Commit 9cf4e9d8
Changed files (8)
app
assets
javascripts
backbone
models
templates
cakes
views
cakes
controllers
api
views
api
v1
categories
config
app/assets/javascripts/backbone/models/category.js.coffee
@@ -0,0 +1,10 @@
+class CakeSide.Models.Category extends Backbone.Model
+ paramRoot: 'category'
+
+ defaults:
+ name: null
+ slug: null
+
+class CakeSide.Collections.CategoriesCollection extends Backbone.Collection
+ model: CakeSide.Models.Category
+ url: '/api/v1/categories'
app/assets/javascripts/backbone/templates/cakes/new.jst.ejs
@@ -27,11 +27,9 @@
<label class="control-label">Category</label>
<div class="controls">
<select id="cake_category_id" name="category_id">
- <option value="15" selected="selected">Cake</option>
- <option value="12">Cake Pop</option>
- <option value="13">Cookie</option>
- <option value="3">Cup Cake</option>
- <option value="16">Other</option></select>
+ <% _.each(categories, function(category) { %>
+ <option value="<%= category.id %>"><%= category.name %></option>
+ <% }); %>
</select>
</div>
</div>
app/assets/javascripts/backbone/views/cakes/new_view.js.coffee
@@ -65,3 +65,9 @@ class CakeSide.Views.Cakes.NewView extends Marionette.ItemView
disableSaveButton: ->
@ui.save_button.attr('disabled', 'disabled')
+ serializeData: ->
+ {
+ cake: @model.toJSON(),
+ categories: CakeSide.Application.request('CategoriesRepository').toJSON(),
+ }
+
app/assets/javascripts/backbone/cakeside.js.coffee
@@ -24,9 +24,14 @@ window.CakeSide =
Backbone.history.start()
@cakes = new CakeSide.Collections.CakesCollection()
+ @categories = new CakeSide.Collections.CategoriesCollection()
+ @categories.fetch(reset: true)
+
CakeSide.Application.reqres.setHandler 'CakesRepository', =>
@cakes
- CakeSide.Application.reqres.setHandler 'PhotosRepository', (cake_id) =>
+ CakeSide.Application.reqres.setHandler 'CategoriesRepository', =>
+ @categories
+ CakeSide.Application.reqres.setHandler 'PhotosRepository', (cake_id) ->
photos = new CakeSide.Collections.PhotosCollection(cake_id: cake_id)
photos.fetch(reset: true)
photos
app/controllers/api/v1/categories_controller.rb
@@ -0,0 +1,11 @@
+module Api
+ module V1
+ class CategoriesController < ApiController
+ respond_to :json
+
+ def index
+ respond_with(@categories = Category.all)
+ end
+ end
+ end
+end
app/views/api/v1/categories/_category.json.jbuilder
@@ -0,0 +1,3 @@
+json.id category.id
+json.name category.name
+json.slug category.slug
app/views/api/v1/categories/index.json.jbuilder
@@ -0,0 +1,3 @@
+json.array! @categories do |category|
+ json.partial! 'category', category: category
+end
config/routes.rb
@@ -46,9 +46,10 @@ Cake::Application.routes.draw do
namespace :api, :defaults => { :format => 'json' } do
namespace :v1 do
- resources :cakes, :only => [:index, :show, :create, :update] do
- resources :photos, :only => [:index, :create]
+ resources :cakes, only: [:index, :show, :create, :update] do
+ resources :photos, only: [:index, :create]
end
+ resources :categories, only: [:index]
resources :logins, :only => [:create]
end
end