4

私は現在、backbone.jsをrailsアプリケーションに移植することに頭を悩ませようとしています。手始めに、/applicationsにあるrailsアプリケーションの特定の部分に組み込みたいと思います。そうは言っても、私はlocalhost:3000 /applicationsを提供するrailsリソース「resources:applications」を持っています。/ Applicationsのバックボーンをインスタンス化すると、そのRailsリソースでバックボーンルーティングのアンカータグを取得します。IE localhost:3000 / Applications /#applications/5。

Railsアプリの特定の部分でのみバックボーンを使用するため、シングルページアプリにはしないことを考えると、これは正しい方法ですか?URLは少し冗長に見えます。

正解は、バックボーンルーターを廃止する必要があるということかもしれません。もしそうなら、コレクション/モデルを検索しようとするときに、どのように:idをバックボーンアプリケーションに渡すことができますか。

私がバックボーンを使用するポイントは、JavaScriptが重いレールアプリの特定のセクションを整理するのに役立つことです。

ルーターを次のようなものに変更できることをお伝えしておきます。

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

これにより、localhost:3000 / Applications /#/ 1のURLが得られますが、これにより、私は隅に追いやられ、他のRailsリソースでバックボーンを使用できなくなると思います。バックボーンが呼び出されたlocalhost:3000 / Dashboardを使用すると、間違ったbackbone.js機能が実行されます。

もう1つの考えは、Railsリソースごとにバックボーンルーターを呼び出すことです。ルーターはそのrailsリソースに対してのみ呼び出されるため、前述のルートコードを使用できます。

4

1 に答える 1

3

私はこれを理解することになった。私はバックボーンレールの使用に切り替え、サンプルアプリケーションを起動して実行するためのチュートリアルに従いました。https://github.com/codebrew/backbone-rails。解決策はrailshtml.erbにあり、railsリソースに必要な特定のルーターのみをロードしました。

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リンクのチュートリアルを実行することをお勧めします。

于 2013-02-11T03:20:27.317 に答える