2013-02-10 2 views
4

현재 backbone.js를 레일 어플리케이션에 접목하는 방법을 고민하고 있습니다. 우선,/applications에있는 레일 애플리케이션의 특정 부분에 빌드하고 싶습니다. 그걸로 나는 레일스 리소스 "resources : applications"을 갖고 있다고 말하면서 localhost : 3000/applications을 얻을 수있었습니다. 이제/applications에 대한 백본을 인스턴스화 할 때 해당 레일 자원에서 백본 라우팅을위한 앵커 태그를 얻습니다. IE localhost : 3000/applications/# applications/5.backbone.js 라우터와 레일 컨트롤러를 섞으십시오.

레일 앱의 특정 부분에서만 백본을 사용하므로 한 페이지 앱으로 만들지는 않는다는 점을 감안할 때 이것이 올바른 방법일까요? URL이 약간 중복 된 것처럼 보입니다.

정답은 백본 라우터를 없애야 할 수도 있습니다. 그렇다면 콜렉션/모델을 찾을 때 백본 애플리케이션에 ID를 어떻게 전달할 수 있습니까?

백본을 사용하는 요점은 자바 스크립트 무거운 레일 응용 프로그램의 특정 섹션을 구성하는 것입니다.

내가 뭔가에 라우터를 변경할 수 있음을 언급한다 : 나에게 로컬 호스트의 URL을 줄 것이다

routes: 
'': 'index' 
':id': 'show' 

: 3000/응용 프로그램/#/1 -이는 구석으로 나를 칠 생각하지만 다른 레일 리소스에서 백본을 사용할 수 없게됩니다. 백본이 호출 된 localhost : 3000/dashboard를 가지고 있다면 잘못된 backbone.js 기능이 실행될 것입니다.

또 다른 생각은 레일스 자원 당 백본 라우터를 호출하는 것입니다. 라우터는 해당 레일 리소스에 대해서만 호출 될 것이므로 위에서 설명한 루트 코드를 사용할 수 있습니다.

답변

3

나는 이것을 알아 냈습니다. 백본 레일 (backbone-rails)을 사용하여 샘플 애플리케이션을 설치하고 실행하는 방법에 대한 자습서를 따랐습니다. https://github.com/codebrew/backbone-rails. 이 솔루션은 html.erb 레일에 있으며 레일 리소스에 필요한 특정 라우터 만로드합니다.

routes: 
    "new"  : "newPost" 
    "index" : "index" 
    ":id/edit" : "edit" 
    ":id"  : "show" 
    ".*"  : "index" 

그런 다음 posts.html.erb에서 다음을 넣을 수 있습니다.

<div id="posts"></div> 

<script type="text/javascript"> 
    $(function() { 
    // Blog is the app name 
    window.router = new Testing.Routers.PostsRouter({posts: <%= @posts.to_json.html_safe -%>}); 
    Backbone.history.start(); 
    }); 
</script> 

제 대답이 의미가 없다면 앞서 말한 github 링크에 대한 자습서를 살펴 보시기 바랍니다.

관련 문제