4

我目前正在尝试将主干.js 移植到我的 Rails 应用程序中。对于初学者,我想将它构建到 /applications 的 rails 应用程序的特定部分。话虽如此,我有一个 Rails 资源“资源:应用程序”,它给了我 localhost:3000/applications。现在,当我为 /applications 实例化主干时,我会在该 rails 资源处获得主干路由的锚标记。IE 本地主机:3000/applications/#applications/5。

鉴于我只会在 rails 应用程序的特定部分使用主干,因此不会使其成为单页应用程序,这是正确的做事方式吗?URL 似乎有点多余。

正确的答案可能是我需要取消骨干路由器?如果是这样,那么在尝试查找集合/模型时如何将 :id 传递给主干应用程序。

我使用主干的目的是帮助组织 Rails 应用程序的特定部分,该部分将是大量 javascript。

我应该提到我可以将路由器更改为:

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

这将为我提供 localhost:3000/applications/#/1 的 url - 但是我认为这将我画到了一个角落,并且不允许我在其他 Rails 资源上使用主干。如果我要调用主干的 localhost:3000/dashboard,那么将执行错误的主干.js 功能。

另一个想法是为每个 rails 资源调用一个骨干路由器。我可以使用上述路由代码,因为只会为该 rails 资源调用路由器。

4

1 回答 1

3

我最终弄清楚了这一点。我转而使用主干导轨并按照他们的教程启动并运行示例应用程序;https://github.com/codebrew/backbone-rails。解决方案出现在 rails html.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 回答