2013-07-02 2 views
0

프론트 엔드에서 AngularJS를 사용하는 Rails 애플리케이션이 있습니다. 나는 또한 "/ api/: user_id/submissions/: id"형식의 경로를 사용하여 사용자의 특정 제출물에 액세스합니다. 프런트 엔드에서는 현재 로그인 한 Devise 사용자의 각 게시물과 해당 게시물 만 표시하려고합니다. 나는 두 각도 공장 만들었습니다AngularJS에서 Devise 사용자에게 액세스 하시겠습니까?

var brainDB = angular.module('brainDB',['ngResource']).factory('userSubmission', function($resource){ 
var service = $resource('/api/:user_id/submissions/:id', {user_id: '@user'}, {id: '@id'}); 

return service; 

을 그리고 내 컨트롤러 범위 한 :

brainDB.controller('SubmissionsCtrl',['$scope', 'Submission', 'userSubmission', 
function($scope, Submission, userSubmission){ 

$scope.submissions = Submission.query(); 
$scope.userSubmissions = userSubmission.query(); 



}]); 

유일한 문제는 상단에있는 공장이 작동하지 않습니다. 데이터베이스에서 모든 단일 제출을 출력 할 수 있지만, Angular에게 current_user의 user_id가 무엇인지 알려주는 방법을 모르겠습니다. "/ api/: user_id/submissions /"내 경로에서 특정 사용자에 대한 모든 게시물을 성공적으로 가져 오는 작업이있는 submissions.rb 컨트롤러가 있습니다.하지만 Angular에게 어떻게 알리는 지 모르겠습니다. current_user.id는 Rails에서만 액세스 할 수 있기 때문에 current_user.id입니다.

저는 일주일 동안이 문제를 해결하기 위해 노력해 왔으며 Google 검색을 통해 많은 도움을 얻지 못했습니다. 어떤 조언을 크게 주시면 감사하겠습니다.

답변

0

내 자신의 응용 프로그램은 다른 서버 엔드 포인트 호출 각도 .run() 블록에서 초기화됩니다 defaults & 각 서비스 Metadata 있습니다. 이 블록은 currentUser 개체를 다른 메타 데이터로 다시 가져와 $rootScope 개의 변수를 초기화합니다. 거기에서 내 각 컨트롤러에 userSubmission.query({user_id: $rootScope.currentUser.id}); 등으로 다른 각도 서비스를 호출 할 수 있습니다.

또 다른 옵션은 모든 메타 데이터와 자바 스크립트 파일에 메타 데이터의 내용을 생성하는 것 (예 : metadata.js.erb하는 당신은 레일 전체 각 응용 프로그램을 사용할 수 있습니다 <%= =>를 사용하여 변수()를 채울 수 있습니다.

희망이 도움이

+0

정보를 제공해 주셔서 감사합니다. –

관련 문제