在Rails上配置AngularJS路由

时间:2014-09-16 21:05:35

标签: javascript ruby-on-rails angularjs ruby-on-rails-3

我很难在Rails上配置AngularJS路由。我知道这是一个基本概念并且已经阅读:http://start.jcolemorrison.com/setting-up-an-angularjs-and-rails-4-1-project/,但似乎我仍然有点困惑。

我目前有一个Rails routes.rb文件,我想先设置它来处理angularRoutes,如果它不是一个有角度的路径,那么就回到rails。上面的链接说明包括以下两行代码:

 root 'application#index'
 get '*path' => 'application#index'

因此将根页面指向应用程序控制器的索引方法。在这种情况下,我不太确定Angular如何有机会进行路由。

我不确定将什么放在我的Rails项目的routes.rb文件中,以便首先执行Angular路由。

我的角度路线:

# Define the carmel application
@carmel = angular.module('carmel',
    'ui.bootstrap',
    'ngRoute',
    'templates',
])

# Define our routes
 @carmel.config([
   '$routeProvider',
   '$locationProvider',
   ($routeProvider, $locationProvider) ->

    console.log("HEre1");

    $routeProvider.when '/',
        templateUrl: '<%= asset_path("production/index.html") %>'
        controller:  'ProductionIndexCtrl'
        resolve: {

        }

    # So we don't have "#" in the url's.  Magic.
    $locationProvider.html5Mode true
])

(我希望根路径指向我的angular templateURL和控制器,目前我收到错误。)

ActionView :: MissingTemplate at /

缺少模板应用程序/索引{:locale =&gt; [:en],:formats =&gt; [:html],:handlers =&gt; [:erb,:builder,:raw,:ruby,:jbuilder ,:coffee,:haml]}。搜索:*&#34; / Users / simon_zhu / Documents / carmel / app / views&#34; *&#34; /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/jasmine-rails-0.9.0/app/views" *&#34; /Users/simon_zhu/.rvm/gems/ruby-2.1.0/gems/devise-3.2.4/app/views"

1 个答案:

答案 0 :(得分:0)

您需要在Application#index操作中呈现视图。

您的routes.rb文件正在点击ApplicationController的{​​{1}}操作,默认为#index,如果您没有设置自己的render :index render 1}}或redirect动作。您的错误来自Rails无法找到此视图。

最简单的方法是在application下创建一个views文件夹并制作一个简单的index.html.erb。这将默认使用application.html.erb中的app/views/layout布局文件,该文件应链接您的application.js清单,该清单应列出您的Angular文件。

\_ app
  \_ views
    \_ application
     |  - index.html.erb
    \_ layouts
     |  - application.html.erb

只要您的app/views/application/index.html.erbapp/views/layout/application.html.erb合并了ng-appng-view,您就应该可以看到Angular代码正在运行。