Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度布线不正常_Javascript_Ruby On Rails_Ruby_Angularjs_Ruby On Rails 4 - Fatal编程技术网

Javascript 角度布线不正常

Javascript 角度布线不正常,javascript,ruby-on-rails,ruby,angularjs,ruby-on-rails-4,Javascript,Ruby On Rails,Ruby,Angularjs,Ruby On Rails 4,因此,我尝试在RubyonRails应用程序中尝试角度路由 问题是,当我在一条路径上着陆时,比如说,“/”,我有一个角度路由,当我着陆时,它应该在我想要的目录中加载一个模板,然后我的Rails服务器将抛出此错误: Started GET "/templates/index.html.erb" for 127.0.0.1 at 2014-12-02 18:03:39 +0200 ActionController::RoutingError (No route matches [GET] "/tem

因此,我尝试在RubyonRails应用程序中尝试角度路由

问题是,当我在一条路径上着陆时,比如说,
“/”
,我有一个角度路由,当我着陆时,它应该在我想要的目录中加载一个模板,然后我的Rails服务器将抛出此错误:

Started GET "/templates/index.html.erb" for 127.0.0.1 at 2014-12-02 18:03:39 +0200
ActionController::RoutingError (No route matches [GET] "/templates/index.html.erb"):
所以基本上,它似乎没有尝试从文件夹加载我的文件,而是尝试将我告诉的路径放到URL,然后发出请求

因为如果我将
模板url:
替换为
/users
,这是我的应用程序中用html响应的实际路由,那么它将有效地路由到它。但这不是我想要的行为

我想用输入调用的路由时指定的模板替换ng视图中的html模板

以下是我的角度布线代码:

App = angular.module("App", ['ngRoute', 'growlNotifications'])

    App.config ($httpProvider) ->
        authToken = $("meta[name=\"csrf-token\"]").attr("content")
        $httpProvider.defaults.headers.common["X-CSRF-TOKEN"] = authToken

    App.config ($routeProvider, $locationProvider) ->
        $locationProvider.html5Mode true
        $routeProvider
            .when '/',
                templateUrl: 'templates/index.html.erb',
                controller: 'VisitorsCtrl'
            .when '/users',
                templateUrl: '../../views/users/index.html.erb',
                controller: 'UsersCtrl'
            .otherwise redirectTo: "/"
另外,在我的
application.html.erb
中,我将
base href
设置为
'/'

我的模板当前的位置如下:
app/assets/javascripts/angular/templates
,我的路由在
angular
文件夹中定义

这里有什么问题

  • 如果要获取ERB模板,可能需要将ERB更改为仅html
  • 您的模板位于错误的目录中,您需要使用正确的路径,如:“/assets/angular/templates/index.html”或将模板放入公共目录“/public/templates”
  • 如果您仍然想使用ERB来呈现模板,您将需要一些路由(config/routes.rb)的解决方案,该解决方案将临时绑定到url:/templates/sth.html上的页面控制器,但我猜这是一个相当丑陋的解决方案
  • 我认为最好的解决方案是如下:)它们将模板存储在public/templates目录中
    将尝试您的解决方案并报告!好的,我把文件改成了.html,并使用了你给我的路径。但是为什么它是
    资产/angular/templates/public.html
    ?当angular文件夹也在javascripts文件夹中而不仅仅在assets文件夹中时?这是通过链轮从Rails编译和发布资产的方式。如果资产目录中仍然有一个模板,那么在生产环境中可能会有问题……好吧,但我想可以在rails文件夹视图下创建它?要在其中创建模板文件夹?但是该文件夹的路径会是什么呢?