Ruby on rails 3 铁路3&x2B;设计+;登录&x2B;控制器

Ruby on rails 3 铁路3&x2B;设计+;登录&x2B;控制器,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,我有一个简单的控制器,我想手动登录用户,由于某种原因,Desive方法登录不起作用 这是我的控制器: 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)

我有一个简单的控制器,我想手动登录用户,由于某种原因,Desive方法登录不起作用

这是我的控制器:

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
...
似乎我只能在Desive子类中使用此方法。 我试图包括许多设计助手,但暂时没有任何效果

def sign_in
  user = User.find_by_email(params[:email])
  if user and user.valid_password?(params[:password])
    sign_in(:user, user)
    ^^^^^^^
看到那条线了吗。 您正在调用
sign\u in
——这是您刚才编写的方法的名称。 这意味着你的代码正在调用自己。。。您的
sign_in
方法的参数为零

(如果你拿走
(:user,user)
部分…你实际上会得到堆栈溢出-因为你的代码会调用它自己…它会调用它自己…一次又一次,直到内存爆炸并死亡)


您是否正在尝试调用另一个名为“登录”的方法?如果是-该方法位于何处?

Hi-您从何处获得错误?你能给我们完整的stacktrace(特别是导致错误的确切行号)我的天。。。我一定很累了。我相信问题在于方法名。。。我现在就试试,然后回到你身边
def sign_in
  user = User.find_by_email(params[:email])
  if user and user.valid_password?(params[:password])
    sign_in(:user, user)
    ^^^^^^^