从AngularJS访问Devise用户

Access Devise user from AngularJS?

本文关键字:用户 Devise 访问 AngularJS      更新时间:2023-09-26

我有一个Rails应用程序,它在前端使用AngularJS。我还有一个格式为"/api/:user_id/subsitions/:id"的路由,用于访问用户提交的特定内容。在前端,我想显示当前登录的Devise用户的每一篇帖子,并且只显示他们的帖子。我创建了Angular工厂:

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是什么。我有一个submissions.rb控制器,它可以成功地从我的路由中提取特定用户的所有帖子,"/api/:user_id/contensions/",但正如我所说,我不知道如何告诉Angular current_user.id是什么,因为current_user只能从Rails访问。

我已经试着解决这个问题一周了,但在谷歌搜索中没有找到太多帮助。如有任何建议,不胜感激。

我自己的应用程序有另一个服务器端点调用defaults&在角度CCD_ 3块中初始化的角度服务CCD_。此块将currentUser对象(与其他元数据一起)拉回来以初始化$rootScope变量。从那里,我可以用我的角度控制器中的userSubmission.query({user_id: $rootScope.currentUser.id});等调用其他角度服务。

另一种选择是在javascript文件中生成元数据内容,其中包含所有元数据(即metadata.js.erb,其中您让rails填充整个angular应用程序可用的变量(使用<%= =>)。

希望能有所帮助。