JavaScript AngularJS 如何在 Rails 中使用 Tempalte?

evil850209 · 2013年07月12日 · 最后由 evil850209 回复于 2013年07月14日 · 4421 次阅读

当 AngualrJS 和 Rails 集成时,遇到一个问题,就是我想在前端使用$routeProvider,将 templateUrl 指向 assets 中的一个文件。

app.config(function($routeProvider) {
 4 
 5   $routeProvider.when("/login", {
 6    
 7     templateUrl: '../assets/templates/login.html',
 8     controller: 'LoginController'
 9   });                                                                                                                                    
10 
11   $routeProvider.otherwise("/login");
12 });

现在报 404 的问题,即 login.html 不能请求到。请问各位 assets 中的文件不能直接静态访问吗?如果用 AngualrJS 和 Rails,Angualr 的 template 文件放在哪里比较好?

此外还发现一个问题是 asset_path 这个方法在 Rails4 中不起作用

asset_path('templates/login.html')

会被渲染成 templates/login.html而不是assets/templates/login.html

补充一句,我用的 Rails 版本是 4.0.0

GitHub 上的例子都是可以直接访问的,不知道在那里做了设置。

不是应该这样么 asset_path('login.html')

asset_path 在 rails 4 能用的,3 楼正解

angular-rails route 我是这样写的 https://github.com/qhwa/daily-goal/blob/master/webapp/app/assets/javascripts/tasks.js.coffee.erb

应该脱离 rails 比较好吧。

@fahchen 为什么不用加 templates 目录呢?login.html 明明是在 app/assets/templates 文件夹下呀。

templateUrl 应该是指 rails 的 url 吧,不是文件的地址。比如/login.html的话,那就会访问localhost:3000/login.html来拿到。

@fahchen 看了 rails guide 的 asset piple,没有提到这方面问题。

经测试 asset_path 在 application.html.erb 中确实是映射成/ 而在其他 view 中映射成/assets 这个是为什么呢?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号