Маршрут для настраиваемого действия в контроллере, наследуемого от Devise :: SessionsController - PullRequest
9 голосов
/ 13 октября 2011

У меня есть контроллер сеанса, который наследуется от Devise :: 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;

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

Как добавить маршрут для действия get_token.

Заранее спасибо

1 Ответ

20 голосов
/ 14 октября 2011

Вам необходимо настроить маршрут в Devise следующим образом:

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

Это позволит вам вызвать http://your -url / get_token для доступа к этому действию.

...