2016-03-23 2 views
1

У меня есть контроллерRails разработать неопределенный метод `after_sign_in_path_for»

class SessionsController < Devise::SessionsController 
    respond_to :js 
    layout false 

    def create 
    self.resource = warden.authenticate(auth_options) 

    if resource && resource.active_for_authentication? 
     sign_in(resource_name, resource) 
    end 
    end 

end 

и мой шаблон для его

create.js.erb

<% if user_signed_in?%> 
    <%= after_sign_in_path_for(resource) %> 
<% else %> 
Erorrs here... 
    }) 
<% end %> 

Я хочу, чтобы перенаправить на конкретную страницу после знака в но имеют

NoMethodError - undefined method `after_sign_in_path_for' for #<#<Class 

Что мне делать, чтобы исправить это?

Rails.application.routes.draw do 
     devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks",:confirmations => "confirmations",:passwords => "passwords", :sessions => "sessions" } 
    end 
+0

Вы можете разместить свой 'routes.rb' файл? –

+0

@ NarasimhaReddy добавлены маршруты – user2322409

ответ

0

У меня есть похожая реализация, вы можете попробовать это

class Devise::SessionsController < DeviseController 
    prepend_before_filter :require_no_authentication, :only => [ :new, :create ] 

    def create 
     self.resource = warden.authenticate(auth_options) 

     if resource && resource.active_for_authentication? 
     sign_in(resource_name, resource) 
     end 

     respond_with resource, :location => after_sign_in_path_for(resource) 
    end 
end 

В ApplicationController

private 

    def after_sign_in_path_for(resource) 
    stored_location_for(resource) || request.referer || root_path 
    end 
Смежные вопросы