最近Backbone.jsを触っています。Backbone.jsをRailsで使いたいならパッケージで導入してしまうのが一番簡単でしょう。
Gemfileにrails-backboneを追加してbundle install
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'mysql2'
group :assets do
...
end
gem 'jquery-rails'
gem 'rails-backbone' # <- 追加
Backbone.jsを組み込みます。
$ bundle exec 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/app.js.coffee
app/assets/javascript/application.js は以下のように変更されます。
//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require backbone_rails_sync
//= require backbone_datalink
//= require backbone/app
//= require_tree .
この下から2行目、ファイルでは app/assets/javascript/backbone/app.js.coffee が各モデル・ビュー・テンプレートなどを読み込むようになっています(ファイル名はRailsアプリと同じ名前になります)
#= require_self
#= require_tree ./templates
#= require_tree ./models
#= require_tree ./views
#= require_tree ./routers
window.App =
Models: {}
Collections: {}
Routers: {}
Views: {}
rails-backboneのお作法は(scaffoldで生成されたコードをみる限り)モデル・ビュー・ルーターをディレクトリに分けて管理するようです。そしてその構造がそのまま名前空間になります。
例えばUserモデルなら app/assets/javascript/backbone/models/user.js.coffee にファイルを作り、下記のようなコードを書いていきます。
class App.Models.User extends Backbone.Model
url: ->
"/api/users/#{@id}"
アプリ名が長いと若干タイプが面倒かなーって印象ですが、まぁ app/* と同じ感覚で作れるのでRails慣れしてる人は違和感なく使えそうです。