我在我的angular应用程序中有以下代码。
app.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when("/users/:u_id/restaurants/:r_id/menus/:m_id/sections/:sec_id/items", { templateUrl: "/assets/menus/items.html", controller: "MenuItemCtrl" })
});当我使用以下命令导航到路径时,它可以正常工作
<a href="./sections/{{section.id}}/items">View Items</a>但是,当我刷新页面或直接转到url时,它会抛出一个rails路由错误。
No route matches [GET] "/users/3/restaurants/3/menus/4/sections/4/items"如果我在routes.rb中创建这个路由,它只返回与响应相关联的JSON,而不会路由到正确的模板。
有人知道如何解决这个问题吗?
发布于 2014-04-09 07:39:03
在rails路由中,您必须将该请求重定向到angular的基本url,以便能够执行angular。
如果没有它,rails就会响应请求。这就是html5mode路由的工作方式。
编辑:
假设你的angular是由application#home提供的。您希望所有的GET请求都被重定向到那里,这样angular就可以工作了。
添加此路由get '*path', to: 'application#home'将使所有GET请求成为angular页面。
https://stackoverflow.com/questions/22948267
复制相似问题