Integrating Backbone JS with Rails Application
It is an era of Single Page Applications. So there are multiple javascripts framework available that supports SPA. Two most popular frameworks are:
Backbone JS 
Angular JS 
In this section we will talk about easily integrating backbone js with a rails application. If you want to integrate backone js with your rails application in a rails familiar way, rails-backbone gem is best to use. Lets simply see how easy it is.
1) Add rails-backbone gem to your Gemfile.
	rails-backbone
2) Then run bundle.
	bundle
3) After this to create the backbone directory structure you need to run this command:
	rails g backbone:install
	#=>
    insert  app/assets/javascripts/application.js
    create  app/assets/javascripts/backbone/routers
    create  app/assets/javascripts/backbone/routers/.gitkeep
    create  app/assets/javascripts/backbone/models
    create  app/assets/javascripts/backbone/models/.gitkeep
    create  app/assets/javascripts/backbone/views
    create  app/assets/javascripts/backbone/views/.gitkeep
    create  app/assets/javascripts/backbone/templates
    create  app/assets/javascripts/backbone/templates/.gitkeep
    create  app/assets/javascripts/backbone/backbone_app.js.coffee
Thus we can see in the app/assets/javascripts/backbone folder that it has created the architecture of backbone. You will be thinking from now you need to write everything on your own for controllers, models and all. but you are wrong, this gem provides generator which are similar to rails generate to take the headache from you.
Models: Suppose you have a product model with price and name, then you can create a corresponding model in backbone like this:
	rails g backbone:model Product name:string price:integer
	# This will create a model file like this
	
	class BackboneApp.Models.Product extends Backbone.Model
  paramRoot: 'product'
	  defaults:
	    name: null
	    price: null
	class BackboneApp.Collections.ProductsCollection extends Backbone.Collection
	  model: BackboneApp.Models.Product
	  url: '/products'
Routers: There is generator available also for routers, suppose you want to create the routes for the product model you can do that like this:
	rails g backbone:router products index
	
	# It will create these files:
	create  app/assets/javascripts/backbone/routers/products_router.js.coffee
  create  app/assets/javascripts/backbone/views/products/index_view.js.coffee
  create  app/assets/javascripts/backbone/templates/products/index.jst.ejs
Scaffold: Just like rails scaffold if you want to generate models, views and routes in one hit, this gem also supports scaffold generators. You can create everything at one hit like this:
	rails g backbone:scaffold item quantity:integer price:integer
	# It will generate these files:
	  create  app/assets/javascripts/backbone/models/item.js.coffee
    create  app/assets/javascripts/backbone/routers/items_router.js.coffee
    create  app/assets/javascripts/backbone/views/items/index_view.js.coffee
    create  app/assets/javascripts/backbone/templates/items/index.jst.ejs
    create  app/assets/javascripts/backbone/views/items/show_view.js.coffee
    create  app/assets/javascripts/backbone/templates/items/show.jst.ejs
    create  app/assets/javascripts/backbone/views/items/new_view.js.coffee
    create  app/assets/javascripts/backbone/templates/items/new.jst.ejs
    create  app/assets/javascripts/backbone/views/items/edit_view.js.coffee
    create  app/assets/javascripts/backbone/templates/items/edit.jst.ejs
    create  app/assets/javascripts/backbone/views/items/item_view.js.coffee
    create  app/assets/javascripts/backbone/templates/items/item.jst.ejs
Thus you can see that its very easy here to create the setup for backbone in your rails app. For learning more about backbone you can go through the link: http://backbonejs.org/
                       
                    
0 Comment(s)