我在将Rails路由与AngularJS集成时遇到了麻烦。
当我在浏览器输入中转到“ localhost:3000”时,它将我重定向到“ localhost:3000 /#/ auth / sign_in”
但“ sign_in”模板无法呈现。
然后,第二,如果我转到“ localhost:3000 /#/”,它会将我重定向到“ localhost:3000 /#/ auth / sign_in”,并正确渲染“ sign_in”模板。
当我转到“ localhost:3000”然后渲染“ sign_in”时,如何解决?
此处的路由器代码:http : //pastie.org/8917505
谢谢!
我找到了解决方案。
您需要为AngularJS 启用 HTML5模式 :
angular.module('app').config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { ... $locationProvider.html5Mode(true); }] )
您还需要添加<base>html标签:
<base>
<html> <head> <base href="/"> ... </head> </html>
当您再次在浏览器URL输入中按Enter时,它修复了Angular对URL路径的不正确处理。没有这个,最后的“域”将被重复:
本地主机:3000 / auth / sign_in
本地主机:3000 / auth / auth / sign_in
…
您还需要在服务器端(在Rails中)为所有SPA路由编写正确的路由:
config / routes.rb
root 'application#main' get '*path', to: 'application#main'