Javascript 如何将Rails当前用户传递给AngularJS工厂API调用?
在我的Rails应用程序中,我有用户,这些用户可以创建与其帐户关联的帖子。我有一个路由,“/api/:user_id/submissions/:id(:format)”=>“submissions#usersubmission”,如果id与用户关联的id匹配,它将成功显示用户的帖子 我现在要做的是在前端通过AngularJS显示用户的帖子。我不确定如何将:user\u id传递给API调用。以下是我的看法:Javascript 如何将Rails当前用户传递给AngularJS工厂API调用?,javascript,ruby-on-rails,angularjs,factory,Javascript,Ruby On Rails,Angularjs,Factory,在我的Rails应用程序中,我有用户,这些用户可以创建与其帐户关联的帖子。我有一个路由,“/api/:user_id/submissions/:id(:format)”=>“submissions#usersubmission”,如果id与用户关联的id匹配,它将成功显示用户的帖子 我现在要做的是在前端通过AngularJS显示用户的帖子。我不确定如何将:user\u id传递给API调用。以下是我的看法: <div id="submission-list-container">
<div id="submission-list-container">
<ul id="indexSubmissions">
<li ng-repeat="submission in userSubmissions">
<a href="/submissions/{{submission.id}}"><h3 id="submissionh3">{{submission.title}} <small>{{submissionPreview(submission.content)}}</small></h3></a>
<h1>{{submission.user.email}}</h1>
<a id="edit_button" href="/submissions/{{submission.id}}/edit">Edit</a>
</li>
</ul>
</div>
}))
以及调用的控制器操作:
def usersubmission
@user = User.find(params[:user_id])
@submissions = @user.submissions
@submission = @submissions.find(params[:id])
render json: @submission
end
“BrainDB”角度控制器just.query()是userSubmission工厂。在“userSubmission”工厂中,我不确定如何将其与:user_id关联,以便它成功地以JSON格式返回所有用户的帖子。有什么建议吗?永远不要从客户端发送用户。你应该永远不要信任客户 您的rails应用程序应该有一个会话,并且您应该将当前用户存储在会话中的某个位置。(会话是一个散列,如果您手动执行,只需使用一个合理的键来存储当前用户的ID)。您可以在登录时执行此操作,然后检索它
class ApplicationController < ActionController::Base
attr_accessor :current_user
before_filter :load_current_user
# ...
private
def load_current_user
self.current_user = User.find(session[:user_id])
end
end
如果您使用Desive或类似工具,无论如何都会容易得多,因为这些库已经在控制器中插入了
当前用户
(或类似命名的方法)。在Desive会话控制器中有什么需要修改的吗?我的只是看起来像“类MySessionsController当前用户
,无需自行定义任何内容。使用Deave提供的工具。@writed,我正在使用Deave。如果我遵循你的方法,它最终会在localhost:3000而不是我的主页上显示json本身。我该怎么办?这是我的代码:在\u操作之前:加载\u当前\u用户;私有的def load_当前_用户;如果你签了名?;(at)currentuser=当前用户;呈现json:(at)currentuser;结束;end@SzilardMagyar你到底为什么要在before_动作中调用render
?
class ApplicationController < ActionController::Base
attr_accessor :current_user
before_filter :load_current_user
# ...
private
def load_current_user
self.current_user = User.find(session[:user_id])
end
end
def usersubmission
@submissions = current_user.submissions
@submission = @submissions.find(params[:id])
render json: @submission
end