3

我正在使用 AngularJS 和 Rails 开发一个单页 Web 应用程序。

URL # 符号有问题。

$routeProvider 会添加一个井号,使 URL 看起来像 /#/post,而我想要的是:/post 有人告诉我添加“$locationProvider.html5Mode(true);” 这段代码,它确实有效。

但是一个新的问题来了,当我输入一个像http://example.com/test(不存在)这样的 URL 时重定向到 Rails 错误页面说没有这样的路由。问题是为什么路由由 Rails 路由处理,不应该由 AngularJS $routeProvider API 处理?

$routeProvider.otherwise({redirectTo: '/'})

它应该重定向到根路径,但显示错误 Rails 页面。当我输入 /post (存在)时,它也会重定向到 Rails 错误页面(无路由),但 /#/post 工作正常。我能做些什么来修复它?

4

1 回答 1

3

AngularJS 路由器仅在页面加载后负责。hash tag(#) 正常工作的原因是因为 # 之后的任何路径名都没有传递给 rails。因此,当您输入时,/#/test它意味着到 rails 路由器的根路径。但是当你输入/testrails route 时会查找该路线是否存在。

一种简单的方法是为每条丢失的路线呈现相同的角度页面。在你的路由文件的底部做这样的事情:

get '*path' => "home#index"

于 2013-11-13T18:53:54.613 回答