我有一个简单的控制器,我想手动记录用户,由于某种原因,设计方法sign_in不起作用
这是我的控制器:
class Brand::ChallengesController < ApplicationController
def sign_in
user = User.find_by_email(params[:email])
if user and user.valid_password?(params[:password])
sign_in(:user, user)
redirect_to brand_challenges_url
else
...
end
end
...
编辑 我总是在sign_in方法上得到这个答案:
wrong number of arguments (2 for 0)
似乎我只能在设计子类中使用此方法。 我试图包括许多Devise助手,但目前没有任何工作。
答案 0 :(得分:1)
def sign_in
user = User.find_by_email(params[:email])
if user and user.valid_password?(params[:password])
sign_in(:user, user)
^^^^^^^
看到那条线。
您正在调用sign_in
- 这是您刚刚编写的方法的名称。
这意味着您的代码正在调用自己......并且您的sign_in
方法的参数为零。
(如果你带走了(:user, user)
部分......你实际上会得到一个堆栈溢出 - 因为你的代码会调用自己......这会自称...自己一遍又一遍地直到记忆刚刚爆炸并死亡。)
您是否尝试调用一些名为sign_in
的其他方法?如果是的话 - 该方法位于何处?