2013-08-01 3 views
4

Я нашел похожие потоки на SO, но ни один из них не помог мне решить эту проблему. Мои маршруты выглядит следующим образом:Devise + Facebook omniauth: Действие «facebook» не найдено для Devise :: OmniauthCallbacksController

devise_for :users do 
    post '/users' => 'registrations#create', :as => 'user_registration' 
end 
devise_for :users, :controllers => {:omniauth_callbacks => "users/omniauth_callbacks"} 

Я также попытался:

devise_for :users, :controllers => {:omniauth_callbacks => "omniauth_callbacks"} 

Но я все еще получаю

The action 'facebook' could not be found for Devise::OmniauthCallbacksController 

Я даже пытался перезапустить сервер, но Бесполезный Не помоги мне. Я следую this tutorial.

omniauth_callbacks_controller.rb:

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
     @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user) 

     if @user.persisted? 
      puts @user.inspect 
      flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook" 
      sign_in_and_redirect @user, :event => :authentication 
     else 
      session["devise.facebook_data"] = request.env["omniauth.auth"] 
      redirect_to new_user_registration_url 
     end 
    end 
end 
+1

У вас есть приложение/контроллеры/пользователи/omniauth_callbacks_controller.rb файл также есть метод facebook? – Debadatt

+0

Да, я добавил его к OP. – user984621

+0

как вы окончательно решили, я думаю, что у меня такая же проблема –

ответ

0

Измените свой Разрабатывают маршрут

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 

, чтобы убедиться, что он соответствует определению контроллера.

0

Проверьте свои маршруты. Возможно, они генерируются дважды. Попробуйте:

devise_for :users, :controllers => {:omniauth_callbacks => "users/omniauth_callbacks"} 
devise_scope :users do 
    post '/users' => 'registrations#create', :as => 'user_registration' 
end 
Смежные вопросы