在我的ApplicationController中,有current_use.
private
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
def logged_in?
!!session[:user_id]
end
Run Code Online (Sandbox Code Playgroud)
logged_in?并验证工作.但是,当我改变
<% if logged_in? %>
Run Code Online (Sandbox Code Playgroud)
至
<% if logged_in? && current_user.free? %>
Run Code Online (Sandbox Code Playgroud)
在views/top/index.html.erb中,发生以下错误.
NameError at /
undefined local variable or method `current_user' for #<#<Class:...>:...>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
free? 在user.rb中定义为
def free?
visit.game.count == 0
end
Run Code Online (Sandbox Code Playgroud)
添加
如果我current_user改为@current_user,错误信息变为如下.
NoMethodError at /
undefined method `free?' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
只需尝试将其添加到您的应用程序控制器:
helper_method :current_user
Run Code Online (Sandbox Code Playgroud)
它的作用是将私有方法作为辅助方法,并且可以在所有控制器和视图中访问它.希望这可以帮助.