最近Backbone.jsを触っています。Backbone.jsをRailsで使うなら、パッケージで導入してしまうのが一番簡単だと思います。
Gemfileにrails-backboneを追加してbundle install
|
1 2 3 4 5 6 7 8 9 10 11 |
source 'https://rubygems.org' gem 'rails', '3.2.8' gem 'mysql2' group :assets do ... end gem 'jquery-rails' gem 'rails-backbone' # <- 追加 |
Backbone.jsを組み込みます。
|
1 2 3 4 5 6 7 8 9 10 11 |
$ 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 は以下のように変更されます。
|
1 2 3 4 5 6 7 8 |
//= 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アプリと同じ名前になります)
|
1 2 3 4 5 6 7 8 9 10 11 |
#= 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 にファイルを作り、下記のようなコードを書いていきます。
|
1 2 3 |
class App.Models.User extends Backbone.Model url: -> "/api/users/#{@id}" |
アプリ名が長いと若干タイプが面倒かなーって印象ですが、まぁ app/* と同じ感覚で作れるのでRails慣れしてる人は違和感なく使えそうです。
