Я использую рельсы с устройством и угловые с загрузкой ng-файла. У меня две проблемы. сначала, как только я пойду в корень веб-сайта, выполняется запрос POST, чтобы попытаться войти в систему с результатами в ответ на код состояния 500. В нем говорится, что он не может найти users_url
, что имеет смысл, потому что у меня нет на моих маршрутах, что странно, так это то, что запрос уволен.Действия контроллера, выполняемые, как только страница загружается
Также, используя загрузку ng-файла, при загрузке диалогового окна для загрузки файла диалог загружается и отправляет запрос на загрузку файла напрямую. Без ожидания между ними.
Почему это происходит? THis являются дифферент файлы, находящиеся excuted во всех этих действиях:
app.coffee
app = angular.module("inkorporated", ['ui.router', 'templates', 'rails', 'Devise', 'ngFileUpload', 'ngDialog'])
.config(['$stateProvider','$urlRouterProvider',
($stateProvider, $urlRouterProvider)->
$stateProvider
.state('home', {
url: '/home'
templateUrl: 'home/_home.html'
controller: 'SearchCtrl'
})
.state('login', {
url: '/login'
templateUrl: 'auth/_login.html'
controller: 'AuthCtrl'
onEnter: ['$state', 'Auth', ($state, Auth)->
Auth.currentUser().then ->
$state.go('home')
return
return
]
})
.state('register', {
url: '/register'
templateUrl: 'auth/_register.html'
controller: 'AuthCtrl'
onEnter: ['$state', 'Auth', ($state, Auth)->
Auth.currentUser().then ->
$state.go('home')
return
return
]
})
.state('user', {
url: '/user/{id}'
templateUrl: 'users/_user.html'
controller: 'UserCtrl'
})
$urlRouterProvider.otherwise('home')
return
])
navCtrl.coffee
angular.module("inkorporated").controller('NavCtrl', ['$scope', '$state', 'Auth',
($scope, $state, Auth)->
$scope.config = {
headers: {
'X-CSRF-TOKEN': $('meta[name=csrf-token]').attr("content")
}
}
$scope.signedIn = Auth.isAuthenticated
$scope.logout = Auth.logout
Auth.currentUser().then(
(user)->
if !!user.email
$scope.user = user
else
$scope.user = {}
return
)
$scope.$on('devise:new-registration',
(e, user)->
$scope.user = user
return
)
$scope.$on('devise:login',
(e, user)->
if !!user.email
$scope.user = user
else
$scope.user = {}
return
)
$scope.$on('devise:logout',
(e, user)->
$scope.user = {}
return
)
return
])
avatarCtrl.coffee
angular.module("inkorporated").controller("AvatarCtrl", ["$scope", "$stateParams", "Upload", "ngDialog"
($scope, $stateParams, Upload, ngDialog)->
$scope.$watch('avatar',
(avatar)->
$scope.upload($scope.avatar)
return
)
$scope.upload = (avatar)->
Upload.upload({
url: "users/avatar",
fields: { 'id': $stateParams.id }
file: avatar
})
.success(
(data, status, headers, config)->
$scope.closeThisDialog()
return
)
return
return
])
application.html.haml
!!!
%html{ "ng-app" => "inkorporated" }
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%meta{ name: "viewport", content: "width=device-width, initial-scale=1" }/
%title Inkorporated
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= csrf_meta_tags
%body
.container-fluid
%header{ "ng-include" => "'nav/_nav.html'" }
#page-content.container
%ui-view
Непонятно, что означает 'не может найти users_url'. Предположительно это URL-адрес, используемый для запроса, и этот запрос будет вызван navCtrl. Что касается загрузки, то не понятно, что означает «нет ожидания в промежутке» – charlietfl
Невозможно найти users_url, это не важная часть, это то, что действие запускается сразу после загрузки страницы. Как только я перехожу на сайт 'localhost: 3000', я вижу, что запрос' POST' запускается на 'http: // localhost: 3000/users/sign_in.json', и я не знаю, почему это продолжается. Другое дело, что когда я загружаю диалог, использующий 'ng-file-upload', он пытается загрузить файл сразу же после открытия диалога, отправив также запрос на http: // localhost: 3000/users/avatars 'который является адресом, который я настроил для изменения аватара –
, вероятно, внутри' Auth.currentUser() ', вызываемого в navBarCtrl. Однако код не показан для этого. Ваша загрузка привязана к '$ watch' ... должна проверять наличие newValue на том, что возможно или передумать логику загрузки – charlietfl