2015-03-26 2 views
2

Когда я пытаюсь использовать sign_in или sign_in_with_redirect, я получал неправильное количество аргументов (1 для 0).Devise sign_in метод неправильное количество аргументов (1 для 0)

Мы используем рельсы 4.2, рубин 2.2.0, разработать 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 

Я не могу найти то, что я делаю неправильно, как все это кажется довольно прямолинейно.

ответ

4

Я предполагаю, что код, который вы отправили, находится в вашем контроллере. Возможно ли, что у вас есть действие sign_in в том же контроллере?

Если это так, то это действие контроллера (которое не принимает никаких аргументов) отменяет метод devs sign_in (который ожидает аргументы). Переименуйте свой метод контроллера sign_in (и маршруты и ссылки на этот метод) на что-то вроде log_in.

+0

Ах, вот оно! Слишком много часов, глядя на код, я думал, что схожу с ума. Спасибо! –

+0

Так было и для меня. Я определял действие «sign_in» в своем контроллере ActiveAdmin. Исправлено изменение имени действия на «log_in». – gabeodess

+0

Я использовал камень 'devise_token_auth' и включил в контроллер приложения эту строку:' include DeviseTokenAuth :: Concerns :: SetUserByToken' - которые путали мои представления, потому что те же методы доступны для них, но с разными параметрами! – BKSpurgeon