2011-10-13 57 views
8

我有一个从设计:: SessionsController继承的会话控制器:路线为从控制器设计:: 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 

正如你可以看到上面,我是重写创建和销毁的行动,我有添加了另一个名为get_token的动作。我增加了它的路线如下图所示:

的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' 

但我得到当我试图访问的get_token方法如下errror;

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

如何为get_token动作添加路由。

在此先感谢

回答

19

你需要的范围,像这样的设计路线:

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

这应该让你打电话http://your-url/get_token访问行动。

+0

这工作。谢谢。 – Abhimanyu

+0

很高兴我能帮到你。 – janders223

+0

我得到路由错误:上面的未初始化的常量SessionsController。任何想法 ? –