0

私の Rails アプリでは AngularJS を使用しており、:current_user; に関連付けられているサイトへのすべての送信を表示したいと考えています。私はディバイスを使っています。

ここに私の工場があります:

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

return service;
});

私のAngularコントローラー:

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

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



}]); 

そして、これが私の提出コントローラーからの関連コードです:

def usersubmission
  @submissions = current_user.submissions 
  @submission = @submissions.find(params[:id])
  render json: @submission 
end

ルート「/api/:user_id/submissions/:id」を設定しました。これは、ブラウザで有効な user_id を使用してアクセスすると問題なく動作します。ただし、current_user.id が何であるかを Angular に伝える方法がわかりません。これを行うにはどうすればよいですか?私は一日中頑張っていて、必死です。

4

1 に答える 1

0

ページが作成されると、すでにセッション スコープが設定されています。ビュー レイアウトでセッション ID をアプリ レベルの JavaScript 変数に渡すだけで、このようなことを行いましたHAML。キックイン前のヘッドブロックの下のようなものng-app.

globalAppCtx = {}
globalAppCtx['user'] = JSON.parse("#{escape_javascript session[:user].to_json}");

上記のコードでsession[:user]は、 で必要とされた関連する Hash を含むユーザー リテラルを使用した ruby​​ セッションですng-app。それ以外の場所では、Angular コードまたは JavaScript の他の場所で、次を参照できます。globalAppCtx['user']

IMOこれはそれほど高価ではないはずでありAJAX、値を取得するためのリクエストを節約できます. このアプローチのマイナス面は考えられませんでした。

于 2013-06-25T05:31:53.910 に答える