0

我有一个在前端使用 AngularJS 的 Rails 应用程序。我还有一个格式为“/api/:user_id/submissions/: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 是什么。我有一个 submits.rb 控制器,它的操作成功地从我的路由“/api/:user_id/submissions/”中提取特定用户的所有帖子,但就像我说的那样,我不知道如何告诉 Angular 是什么current_user.id 是因为 current_user 只能从 Rails 访问。

我已经尝试解决这个问题一周了,并没有通过谷歌搜索找到太多帮助。任何意见是极大的赞赏。

4

1 回答 1

0

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

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

希望有帮助。

于 2013-07-03T00:06:20.370 回答