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();



}]);

唯一の問題は、上部の工場が機能しないことです。データベース内のすべての送信を出力できますが、current_user の user_id を Angular に伝える方法がわかりません。特定のユーザーのすべての投稿をルート「/api/:user_id/submissions/」から正常にプルするアクションを備えた submits.rb コントローラーがありますが、前述のように、Angular に何を伝えるかわかりません。 current_user.id は、current_user が Rails からのみアクセスできるためです。

私はこれを 1 週間解決しようとしてきましたが、Google 検索であまり助けが見つかりませんでした。どんなアドバイスでも大歓迎です。

4

1 に答える 1

0

私自身のアプリには、角度ブロックで初期化される別のサーバー エンドポイント呼び出しdefaultsと角度サービスがあります。このブロックは、変数を初期化するためにオブジェクトを (他のメタデータと共に) 引き戻します。そこから、angular コントローラーで以下を使用して、他の angular サービスを呼び出すことができます。Metadata.run()currentUser$rootScopeuserSubmission.query({user_id: $rootScope.currentUser.id});

別のオプションは、すべてのメタデータを含む javascript ファイルでメタデータ コンテンツを生成することです (つまり、 angular アプリ全体で使用できるmetadata.js.erb変数を (を使用して) Rails に入力させます)。<%= =>

それが役立つことを願っています。

于 2013-07-03T00:06:20.370 に答える