AngularJS html5mode和rails路由

时间:2014-04-12 16:52:37

标签: ruby-on-rails angularjs

我已经关注HTML5Mode上的所有github问题,打破1.5中的Angular应用程序。我遇到了同样的问题,但没有一个修复程序对我有用。

我正在做以下事情:

<base href="/">

get '/*path', :to => "menus#index"

app.config(function($routeProvider, $locationProvider) {
 $locationProvider.html5Mode(true);
 .when("/users/:u_id/restaurants/:r_id/menus/:m_id/edit", { templateUrl: "/assets/menus/edit.html", controller: "MenuSectionCtrl" })
 .when("/users/:u_id/restaurants/:r_id/menus/:m_id/sections/:sec_id/items", { templateUrl:   "/assets/menus/items.html", controller: "MenuItemCtrl" })
 .when("/users/:u_id/restaurants/:r_id/menus/:m_id/sections/:sec_id/items/:i_id/option_sections", { templateUrl: "/assets/menus/option_sections.html", controller: "MenuOptionSectionCtrl" })
 .when("/users/:u_id/restaurants/:r_id/menus/:m_id/sections/:sec_id/items/:i_id/option_sections/:op_sec_id/options", { templateUrl: "/assets/menus/options.html", controller:       "MenuOptionCtrl" })
});

我迷失了下一步该做什么。我尝试过各种路线和基地[href]的组合。

有人有什么想法吗?

另外,我也遵循了本教程。 http://omarriott.com/aux/angularjs-html5-routing-rails/

3 个答案:

答案 0 :(得分:3)

试试此链接 http://start.jcolemorrison.com/angularjs-rails-4-1-and-ui-router-tutorial/

如果您只安装了单个angularjs应用程序,那么它非常直接。您需要在routes.rb

中创建此条目
get '*path' => 'application#index'

在你的application.controller中更改索引方法如下

def index
  render layout: 'application'
end

答案 1 :(得分:0)

以下链接帮助我使用rack-rewrite get,这似乎对我有用。 Here是链接。只有config.ru中的以下代码才允许/api路由到rails:

# config.ru

# This file is used by Rack-based servers to start the application.

use Rack::Rewrite do
  rewrite %r{^(?!.*(api|\.)).*$}, '/index.html'
end

require ::File.expand_path('../config/environment',  __FILE__)
run Rails.application

答案 2 :(得分:0)

我设法让我的工作:

get '*path', to: redirect('/#/%{path}')

我买的模板在第一次加载后没有哈希工作,但如果刷新页面则不起作用。我尝试手动添加像/#/页面这样的哈希,上面的路由会自动添加。