Ruby on rails 3 设计:从控制器登录

Ruby on rails 3 设计:从控制器登录,ruby-on-rails-3,devise,controller,Ruby On Rails 3,Devise,Controller,我需要从非设计控制器登录。我从Deviate wiki中找到了链接,但出现错误: wrong number of arguments (2 for 0) 我做的和链接里的一模一样。出了什么问题?谢谢 我的代码: sign_in(:site, Site.find(params["si"])) 为了清晰起见,你需要在你的代码后传递一个agruments sign_in(:user, User.find(params[:id])) 我可能迟到了。但也有同样的问题,结果是我的用户控制器中有一个si

我需要从非设计控制器登录。我从Deviate wiki中找到了链接,但出现错误:

wrong number of arguments (2 for 0)
我做的和链接里的一模一样。出了什么问题?谢谢

我的代码:

sign_in(:site, Site.find(params["si"]))

为了清晰起见,你需要在你的代码后传递一个agruments

sign_in(:user, User.find(params[:id]))

我可能迟到了。但也有同样的问题,结果是我的用户控制器中有一个sign_-in方法

您是否在调用sign_-in方法的控制器中检查sign_-in方法

sign_in(:user, User.find(params[:id])
如果在设置当前用户后执行binding.pry

出于某种原因,在此之后执行重定向将使当前用户为零

这就是为什么我在会话中设置如下内容,然后重定向,然后检查会话id是否已设置,然后使用它执行上述代码:

session[:new_user_id] = params[:id]

我就是这样做的。但是参数数目错误在Desive controller之外登录用户会有什么好处?请将此行放在调用上方,找出此方法的来源:
p method(:sign\u in)。source\u location
。再次运行测试,现在您将看到该方法的定义位置。@RyanBigg我将其放在该调用上方,我应该在哪里看到结果?我在控制台里什么也没看见。再次感谢汉克斯。但是我已经发现了错误。这是个愚蠢的错误。不过谢谢你你是怎么修好的@ishwrAs是一个仅代码的答案,该答案已被标记为低质量,可能很快将被删除。请添加有关此代码作用的说明。请编辑它。你能试着表现得好一点吗?谢谢。对不起,这是我复制粘贴的标准答案,因为有很多像你这样的帖子。