2016-05-09 3 views
0

Ich versuche angularjs mit Schienen zu verkabeln. Ich habe einige Probleme mit meinen Ansichten. Sie sind nicht inWarum wird meine HTML Seite nicht in <ui-view> gerendert?

Meine Ansicht rendern bekommen wird immer geholt, aber mit einem Fehler [HTTP/1.1 404 Not Found]

Ich erhalte diese Reaktion von first.html https://github.com/sourabh-garg/vegeta/blob/master/response%20error.html

In app/Assets/templates/first.html, die ich versuche zu laden.

app/views/application/index.html.erb hat meine Indexdatei

Strecke root 'Anwendung # index'

App.js

var app = angular.module('myapp', ['ui.router']) 

     .config(function config($stateProvider){ 

     $stateProvider.state("index", { 
     url : "", 
     controller : "FirstCtrl as first", 
     templateUrl : "first.html" 
     }) 

     $stateProvider.state("second", { 
     url : "/second", 
     controller : "SecondCtrl as second", 
     templateUrl : "second.html" 
     }) 

     }) 
     .directive('elem', function() { 
     return { 
      restrict: 'E', 
      templateUrl: "templates/second.html" 
     }; 
     }) 
     .filter('reverse', function(){ 

     return function(text){ 
     return text.split('').reverse().join(''); 
     } 

     }) 
     .service("greeting", function Greeting(){ 

     var greeting = this; 

     greeting.message = "Default"; 
     }) 
     .service('Data', [function() { 

     return {message: "You are a awesome"} 
     }]) 
     .controller('FirstCtrl', function($scope, greeting, Data){ 

     var first = this; 
     first.greeting = greeting; 

     first.data = Data; 

     first.reversed = function(message){ 
      return message.split('').reverse().join(''); 

     }; 

     }) 
     .controller('SecondCtrl', function($scope, greeting){ 

     var second = this; 
     second.greeting = greeting; 
     }); 
+0

ist "/ Sekunde" zeigt nach oben und arbeiten? – Esko

+0

Nein, ist es nicht. Ich sehe einen Fehler "templates/first.html" es sollte nur "first.html" sein. Auch nach der Korrektur. Es funktioniert nicht. – scripter

+0

Sind Sie sicher, dass 'templateUrl:" templates/second.html "' auf den richtigen Ort zeigt? Es ist nicht "templateUrl:" /app/assets/templates/second.html "'? – Kyle

Antwort

0

Ihre Config Funktion wird ungenau geschrieben, versuchen Sie

.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {

Der $ stateProvider wird zweimal verwendet.
// Now set up the states

// For any unmatched url, send to /route1 $urlRouterProvider.otherwise("/first");

$stateProvider .state('first', { url: "/first", templateUrl: "first.html" }) .state('second', { url: "/second", templateUrl: "second.html" }); }])

+0

Nein, das ist nicht das Problem. Ich habe es versucht, ohne die Funktion auch zu benennen. Aber es hat nicht funktioniert. – scripter

+0

Nur meine Ansichten werden nicht gerendert. Wenn ich Template statt TemplateUrl verwende, dann funktioniert es gut. könnte ein Problem mit Gem - Rails-Angular-Template sein? – scripter

+0

Entfernen '$ stateProvider' von' $ stateProvider.state ("zweiten" ' Sie haben bereits' $ stateProvider' eingeleitet und der zweite Zustand Verkettungs werden soll. – Esko

1

1) Sie verwenden gem angular-rails-templates.

Muss das Template-Modul nicht in Ihre Angular-App injiziert werden?
angular.module('myapp', ['ui.router', 'templates'])


2) In Ihrer Dateistruktur app/assets/javascripts/, die application.js Datei in Zeile 5, ob //= require_tree .-//= require_tree ../templates Änderung der Link korrigiert.

Ressource:angular-rails-template: include templates in rails assets pipeline

+1

Das könnte es sein. Der Fehler lässt es so aussehen, als ob die Seite an den Rails-Endpunkt umgeleitet wird, der nicht existiert, anstelle des Endpunktes der Angular App. –

+0

Ja Aber auch danach funktionierte es nicht, ich musste meine html-Dateien im Öffentlichen Ordner behalten, dann funktionierte es nur. – scripter

Verwandte Themen