ruby-on-rails – 如何在AngularJS的Rails 4中修正设置根路由?

我在使用AngularJS集成Rails路由时遇到了麻烦.

当我在浏览器输入中转到“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标签:

<html>
  <head>
    <base href="/">
      ...
  </head>
</html>

当您再次在浏览器URL输入中按Enter键时,它修复了Angular对URL路径的错误处理.如果没有这个,最后的“域名”将会重复:

本地主机:3000 / auth /中sign_in

本地主机:3000 /认证/认证/ sign_in

您还需要在服务器端(在Rails中)为所有SPA路由编写正确的路由:

配置/ routes.rb中

root 'application#main'

  get '*path',to: 'application#main'

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...