【问题标题】:Devise sign_in method wrong number of arguments (1 for 0)设计sign_in方法错误的参数数量(1代表0)
【发布时间】:2015-03-26 21:14:42
【问题描述】:

当我尝试使用 sign_in 或 sign_in_with_redirect 时,我得到的参数数量错误(1 代表 0)。

我们使用的是 rails 4.2、ruby 2.2.0、devise 3.4.1,代码如下:

  #find an authentication account
  card = Card::Dog.where(id: ##)

  #get card associated with the dog account
  @user = card.user

  #sign in card
  sign_in @user

我似乎找不到我做错了什么,因为这一切看起来都很简单。

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    我猜您发布的代码在您的控制器中。您是否有可能在同一个控制器中也有 sign_in 操作?

    如果这是真的,那么控制器操作(不带参数)会覆盖设计的sign_in 方法(需要参数)。将您的 sign_in 控制器方法(以及该方法的路由和链接)重命名为 log_in 之类的名称。

    【讨论】:

    • 啊,就是这样!看代码太多小时,我以为我快疯了。谢谢!
    • 我也是这样。我在我的 ActiveAdmin 控制器中定义了一个“sign_in”操作。将操作名称更改为“log_in”修复它。
    • 我使用了devise_token_auth gem,并在应用程序控制器中包含了这一行:include DeviseTokenAuth::Concerns::SetUserByToken - 这让我的观点感到困惑,因为他们可以使用相同的方法 - 但参数不同!跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2012-03-28
    相关资源
    最近更新 更多