2014-12-02 3 views
0

Итак, я пытаюсь опробовать функцию угловой маршрутизации в приложении Ruby on Rails.Угловая маршрутизация не работает правильно

Проблема в том, что когда я приземляюсь на маршрут, допустим, '/', и у меня есть угловая маршрутизация, которая говорит, что когда я приземляюсь на нее, она должна загрузить шаблон в моем желаемом каталоге, тогда мой сервер 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-адресу, а затем сделать запрос ?

Потому что, если я заменяю templateUrl:/users, который является фактическим маршрутом в моем приложении, отвечающем html, то он будет эффективно направлять на него. Но это не то поведение, которое я хочу.

Я хочу, чтобы угловой заменить html-шаблон в моем ng-представлении с помощью шаблона, указанного при вводе вызываемого маршрута.

Вот мой код для угловой маршрутизации:

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

В чем проблема?

ответ

1
  1. Вы хотите получить шаблоны Еврорадио, вы, вероятно, хотите изменить Еврорадио только HTML
  2. Ваши шаблоны находятся в том каталоге, для того, что вы хотите, вы должны использовать правильный путь, который Ši что-то вроде: «/ активы /angular/templates/index.html "или поместите ваши шаблоны в общедоступный каталог"/public/templates "
  3. Если вы хотите использовать ERB для создания шаблонов, вам понадобится некоторое решение с маршрутизацией (config/routes.rb) это tempaltes для привязки к контроллеру страницы на url: /templates/sth.html, но я думаю, что это довольно уродливое решение.
  4. Я думаю, что лучшим решением для вас является следующее: great tutorial :) Они хранят шаблоны в общедоступном каталоге/шаблонах.
+0

Попробует ваше решение и сообщит об этом! – Kaspar

+0

Хорошо, я заработал, изменив файл на .html и используя путь, который вы мне дали. Но почему это «активы/угловые/шаблоны/public.html»? Когда угловая папка также находится в папке javascripts не только в папке с ресурсами? – Kaspar

+0

Это способ сбора и публикации активов с Rails через Sprockets. Если у вас все еще есть шаблоны в каталоге ресурсов, у вас, вероятно, будет проблема в производственной среде ... –

Смежные вопросы