[英]Ruby on Rails: undefined method `current_user?`
我在尝试弄清楚为什么我得到undefined method
current_user时遇到问题?
在我的应用程序控制器中:
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
# Force signout to prevent CSRF attacks
def handle_unverified_request
sign_out
super
end
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
def authorize
redirect_to login_url, alert: "Not Autherized" if current_user.nil?
end
def track_activity(trackable, action = params[:action])
current_user.activities.create! action: action, trackable: trackable
end
end
在我的会话助手中:
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end
我还是新手,我正在学习一些教程,但是我想弄清楚为什么我为current_user获取未定义的方法?
这是发生我的错误的地方-用户查看文件夹:
<% unless current_user?(@user) %>
<div id="follow_form">
<% if current_user.following?(@user) %>
<%= render 'unfollow' %>
<% else %>
<%= render 'follow' %>
<% end %>
</div>
<% end %>
你还没有定义current_user?
方法在任何地方,你正在调用current_user?(@user)
。
也许,您需要致电signed_in?
而不是current_user?
,或定义current_user?(@user)
是什么意思current_user?(@user)
你还没有定义current_user?
方法。 current_user
和current_user?
之间有区别current_user?
current_user?
总是返回一个布尔响应。
但你可以尝试使用current_user(@user)?
或unless current_user(@user).nil?
尝试这个:
def current_user?(user)
user == current_user
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.