1

백본에 대해 많이 들었으며 최신 프로젝트를 위해 백본을 사용하고 싶었습니다. 그러나 레일즈 배경에서오고 있으며 내 경험은 백본에서 제대로 번역되지 않는 것 같습니다.레일 및 백본 아키텍처

예를 들어 제품보기에 표시해야하는 네 가지 모델이 있습니다.

class Product < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :child 
    has_many :actions 
    has_many :comments 
end 

class Child < ActiveRecord::Base 
    belongs_to :user 
    has_many :products 
end 

백본 모델에서 관계를 정의하기 위해 백본 관계형을 사용하고 있습니다. 다음은 제품 백본 모델입니다.

class Ibabybox.Models.Product extends Backbone.RelationalModel 
    paramRoot: 'product' 
    urlRoot: '/products' 

    relations: 
    [ 
     { 
     type: Backbone.HasMany 
     key: 'actions' 
     relatedModel: 'Ibabybox.Models.Action' 
     collectionType: 'Ibabybox.Collections.ActionsCollection' 
     reverseRelation: 
      key: 'product' 
      includeInJSON: 'id' 
     } 
    ] 

백본 라우터에서 다음을 수행합니다.

클래스 Ibabybox.Routers.ProductsRouter이

routes: 
"": "index" 
":id": "show" 

show: (id) -> 
    @product = new Ibabybox.Models.Product({id: id}) 
    @product.fetch 
    success: (product) -> 
     actions = product.get('actions') 
     child = product.get('child') 
     @child_model = new Ibabybox.Models.Child({id: child.id}) 
     user = @child_model.get('user') 
     @view = new Ibabybox.Views.Products.ShowView({model: product, actions: actions, child: child, user: user}) 
     $("#products").html(@view.render().el) 

그리고 레일 컨트롤러 Backbone.Router

을 확장, 나는 다음을 수행하십시오.

class ProductsController < ApplicationController 
    def show 
    @product = Product.find(params[:id]) 
    render json: @product.to_json(:include => [ :actions, 
              :child => { :include => {:user => {:methods => [:name] }}} ]) 
    end 
end 

먼저 올바른 방향으로 가고 있습니까?

둘째, 그것은

어떤 도움/추천/보정 것 .... 정의하고 제품과 내가 뭔가를 잘못하고있을 수도 느낌의 이유로 관련 일을 표시하기 위해 작성하는 많은 것들을 같은 느낌 많이 감사하겠습니다!

감사합니다.

+0

이 문제의 구체에 관련된되지 않음 (귀하의 경우에는 당신이 가져 오는 대신 성공 콜백을 전달하는 이벤트를 사용할 수 있습니다). backbone events를 그리워하지만, 더 큰 문제의 개요를하지 마십시오 레일 및 백본 아키텍처를 통합하는 데 관심이있을 수 있습니다. http://stackoverflow.com/questions/11918586/rails-and-backbone-working-together/11922573#11922573 –

답변

1

backbone.js doc There's More Than One Way To Do It에 따르면, 애플리케이션이 성장하는 동안 몇 가지 방법으로 통증이 있습니다. backbone.js를 사용하여 3 개의 응용 프로그램을 개발 한 후 여기 & 레일이 제 경험입니다.

  1. backbone.js는 모든 웹 사이트에 적합하지 않습니다. 특히 귀하의 웹 사이트가 콘텐츠 기반 인 경우. 이 경우 pjax를 사용하면 더 나은 결과를 얻을 수 있습니다.

  2. 리소스 기반 디자인이 가장 좋습니다. 그리고 레일과 백본 모두 잘하면. 최소한의 변경으로 기본 레일 생성기를 쉽게 사용할 수 있습니다. 복잡한 객체의 경우 객체를 캐시 할 수 있기 때문에 jbuilder을 사용하는 것이 더 좋습니다.

  3. 당신이 명시 적으로 $의 아약스, $. 후, $를 사용하는 경우. 아마 당신이 잘못 가져가. 동일 2]

  4. 당신이 자신을 반복하는 경우에 뭔가 문제가있다.