2011-10-13 9 views
8

que tiene un controlador de sesión que hereda de Diseñar :: SessionsController:Ruta de acción personalizada en el controlador heredando de Diseñar :: SessionsController

class SessionsController < Devise::SessionsController 

    skip_before_filter :authenticate_user!, :only => [:get_token] 

    def create 
    .... 
    end 

def destroy 
    ... 
end 

def get_token 
    response.headers["app-key"] = form_authenticity_token() 
    render :text=>'Token Set' 
end 

end 

Como se puede ver arriba estoy sobrescribiendo crear y destruir la acción y tengo agregó otra acción llamada get_token. He añadido para rutas como se muestra a continuación:

routes.rb

Application.routes.draw do 

    devise_for :users, :controllers => { :sessions => "sessions" }, :path => "users",  :path_names => { :sign_in => 'login', :sign_out => 'logout',:confirmation => 'verification'} 

    match 'get_token', :to => 'sessions#get_token' 

Pero estoy recibiendo el siguiente errror cuando estoy tratando de acceder método get_token;

[Devise] Could not find devise mapping for path "/get_token". 

Cómo agregar la ruta para la acción get_token.

Gracias de antemano

Respuesta

19

Es necesario que alcance la ruta en Diseñar este modo:

devise_scope :user do 
    get 'get_token' => 'sessions#get_token' 
end 

que debe permitir que llame http://your-url/get_token acceder a esa acción.

+0

Esto funcionó. Gracias. – Abhimanyu

+0

Me alegro de poder ayudar. – janders223

+0

Estoy obteniendo Error de enrutamiento: SessionsController constante no inicializada para arriba. Alguna idea ? –

Cuestiones relacionadas