作为我正在开发的Rails应用程序的一部分,我有一个非常复杂的交互式页面,它实际上是一个SPA。我想利用Ember来完成这个任务,这样我就有了更易于管理的代码。我真正需要的是Rails在这个页面上来回传送数据。使用Ember的另一个原因是,我没有用JS编写的所有这些讨厌的jQuery单行视图模板(我更喜欢使用CoffeeScript)。
我按照ember-cli-rails gem自述文件中的说明安装和配置了Ember。我已经为我的应用程序的任何部分创建了一个单独的布局,我想使用Ember。我为Products设置了一条包含Ember和CSS资源的路径。现在,我可以在Rails应用程序中看到该路由的页面上的“欢迎来到Ember”消息。
但我什么也做不了。我试图为这个名为products的小Ember应用程序创建一个“约”部分。到目前为止我看到的问题是:
views目录。为什么会这样呢?Ember-CLI教程,它不只是内置了大量的假设。我的<ember app>/routes目录中有一个<ember app>/routes,<ember app>/controllers目录中有一个,必须创建的<ember app>/views目录中有一个,<ember app>/templates目录中有一个emblem模板。
现在是一个非常基本的问题。如何在浏览器中打开这条路径?如果我键入路线:
http://localhost:3000/products我得到了我的Ember页面,这是我应该做的。但如果我说:
http://localhost:3000/products/about当然,Rails试图处理这条路线。这不是我想要的。这是我读过的教程中缺少的一步。我总是建议将教程放在门外汉面前,以便在出版前找到漏洞。我很乐意为这份工作做志愿者,以便为社会提供一些东西。
如何在Rails应用程序中导航到Ember路由?
发布于 2015-10-20 12:41:39
你没有。
在过去的日子里,有ember-rails,它让你通过Rails资产管道设置ember。
您基本上可以使它,以便您的根路径在rails将呈现刚好足够的html启动烬。很好,而且效果很好。但这是个很糟糕的主意。
恩伯现在有自己的构建过程,通过Ember-CLI,所以我们不需要链轮或资产管道只是服务于恩伯和它的依赖。
烬也非常好地部署在一个静态html文件中--您可以直接从Apache或NGINX传递请求(例如使用mod_rewrite )。SPA只需要足够的HTML就可以让SPA框架滚动,然后将数据输入到视图中。
如果您将Ember应用程序嵌入Rails中,则请求必须通过Rack all和所有中间件来呈现基本上是静态的html页面--这是大量不必要的开销。
不同的问题。
现代的方法是分离前端SPA和后端API。它们甚至可以由不同的团队开发。在一个大型存储库中拥有所有的东西都是美好而舒适的,您只需推动部署--但将关注点分开会使应用程序更好。
不仅你的前端应用程序加载速度更快,如果它不是通过铁路。如果Rails API能够丢弃与服务资产、会话和视图相关的所有部分,它将运行得更快。它变成了一台普通的绿色JSON机器,而不是一个弹射庞然大物。
ember.js中的路由选择
所以加载ember server并获得Ember检查插件。你的路线应该在locahost:4200/about
余烬开发服务器将确保每个对localhost:4200的请求都呈现index.html页面。
如果禁用javascript,您会注意到locahost:4200上的任何路径(如locahost:4200/foo/bar/baz )都会呈现相同的html。
但是通常Ember会解析请求url并将其传递给路由处理程序。
这是如何在ember.js中声明路由处理程序的:
// app/router.js
Router.map(function() {
this.route('about', { path: '/about' });
});所以当你locahost:4200/about。
成员将渲染templates/about.hbs。截止到Ember2.0,视图已经过时了。相反,您有模板和组件(比如Rails中的部分)。
成员也将加载app/routes/about.js,如果它存在。
https://stackoverflow.com/questions/33236339
复制相似问题