ruby-on-rails - 在 Rails 中没有 # 的 Angular URL

标签 ruby-on-rails angularjs

我正在使用 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 工作正常。我该怎么做才能修复它?

最佳答案

AngularJS 路由器仅在页面加载后负责。井号标签 (#) 正常工作的原因是因为 # 之后的任何路径名都没有传递给 rails。因此,当您输入 /#/test 时,它表示 Rails 路由器的根路径。但是当你输入 /test 时,rails route 将查找路由是否存在。

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

得到'*路径'=>“home#index”

关于ruby-on-rails - 在 Rails 中没有 # 的 Angular URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961463/

相关文章:

ruby-on-rails - 使用 Action Cable 将 Ruby on Rails 应用程序部署到 Heroku(Puma 端口监听)

javascript - 引用工厂内的Angularjs工厂对象

javascript - 使用 Angular UI Router 形成多个步骤

Angularjs 动画不起作用,我走到了死胡同

javascript - Express Angular Node 模板渲染上的 "Cannot find module ' html ' error"

javascript - 单击链接时,AngularJs Controller 不会被调用

ruby-on-rails - Rails3 和安全的 nl2br !

ruby-on-rails - 使用 rails 服务器启动服务器时出错,sqlite 错误

ruby-on-rails - 在 Rails 3 应用程序中使用 require_dependency 对性能有何影响?

sql - 通过 'has_many'获取属性平均值