一尘不染

如何在Rails 4中为AngularJS正确设置根路由?

angularjs

我在将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

谢谢!


阅读 174

收藏
2020-07-04

共1个答案

一尘不染

我找到了解决方案。

您需要为AngularJS 启用 HTML5模式

angular.module('app').config(['$routeProvider', '$locationProvider',
  function ($routeProvider, $locationProvider) { 
  ...
    $locationProvider.html5Mode(true);
  }]
)

您还需要添加<base>html标签:

<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'
2020-07-04