-1
我正在寫登錄/註銷一個簡單的應用程序,我有一個錯誤:NoMethodError,未定義的方法登錄
NoMethodError in WelcomeController#create
undefined method `login' for #<User:0x3dc02c0>
這是我的usermodel
def self.authenticate(pass)
user = find_by_pass(pass)
if user.nil?
return nil
else
return user
end
end
這是我的控制器
def create
user = User.find_by_username(params[:session][:username])
if user && user.authenticate(params[:session][:pass])
login user
redirect_to root_url
else
render 'index'
end
end
這是我的好幫手
def login(user)
session[:user_id] = user.id
end
這是我的應用程序控制器
protect_from_forgery with: :exception
include WelcomeHelper
請幫我解決這個問題:)
它似乎真的搞砸了。它不直接工作,因爲'login'被定義爲'User'類方法,並且您嘗試將它用作實例方法。但是這段代碼有其他嚴重的問題。首先,你似乎不以任何方式加密密碼,這是安全問題。 – 2014-10-27 08:50:39
問題是登錄是輔助方法。 Helper方法在控制器中不可用。儘管代碼存在其他問題,但將登錄方法移至application_controller將解決此特定問題。 – jvnill 2014-10-27 09:01:25