Rails 充当 Votable 检查用户是否登录投票
Rails Acts as Votable check to see if user logs in to vote
我在注销时遇到错误:
undefined method `voted_for?' for nil:NilClass
这是我的观点:
- unless (current_user.voted_for? @project) && (@project.liked_by current_user)
= link_to like_project_path(@project), method: :put, class: "btn btn-default" do
%span.glyphicon.glyphicon-heart
= pluralize(@project.get_likes.size, 'like')
- else
= link_to unvote_project_path(@project), method: :put, class: "btn btn-default" do
%span.glyphicon.glyphicon-heart
= pluralize(@project.get_likes.size, 'like')
如果我删除 current_user.voted_for? @project
并只留下 @project.liked_by current_user
那么出于某种原因,当我刷新页面时它会自动喜欢该项目。即使我清除了我的数据库,当我进入项目时它也会为它添加一个赞
所以当我尝试注销时,我收到了那个错误,但是当我登录时,没有错误,而且似乎运行正常。
这很奇怪,但我不知道您使用的是哪个 gem。也许您还应该检查 current_user
不是 nil
?
类似于:if current_user && current_user.voted_for?(@project)
...
旁注:在文体上,最好避免 unless
.. else
因为它很难阅读。
current_user
未在您的视图中定义,它在控制器中定义。您应该将所有逻辑放在控制器中
在你的控制器中:
@instance_variable = (current_user.voted_for? @project) && (@project.liked_by current_user)
那么在你看来:
unless @instance_variable
我在注销时遇到错误:
undefined method `voted_for?' for nil:NilClass
这是我的观点:
- unless (current_user.voted_for? @project) && (@project.liked_by current_user)
= link_to like_project_path(@project), method: :put, class: "btn btn-default" do
%span.glyphicon.glyphicon-heart
= pluralize(@project.get_likes.size, 'like')
- else
= link_to unvote_project_path(@project), method: :put, class: "btn btn-default" do
%span.glyphicon.glyphicon-heart
= pluralize(@project.get_likes.size, 'like')
如果我删除 current_user.voted_for? @project
并只留下 @project.liked_by current_user
那么出于某种原因,当我刷新页面时它会自动喜欢该项目。即使我清除了我的数据库,当我进入项目时它也会为它添加一个赞
所以当我尝试注销时,我收到了那个错误,但是当我登录时,没有错误,而且似乎运行正常。
这很奇怪,但我不知道您使用的是哪个 gem。也许您还应该检查 current_user
不是 nil
?
类似于:if current_user && current_user.voted_for?(@project)
...
旁注:在文体上,最好避免 unless
.. else
因为它很难阅读。
current_user
未在您的视图中定义,它在控制器中定义。您应该将所有逻辑放在控制器中
在你的控制器中:
@instance_variable = (current_user.voted_for? @project) && (@project.liked_by current_user)
那么在你看来:
unless @instance_variable