2011-10-13 35 views
8

Tôi có một bộ điều khiển phiên mà kế thừa từ lập mưu :: SessionsController:Route cho hành động tùy chỉnh trong điều khiển kế thừa từ lập mưu :: 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 

Như bạn thấy ở trên tôi đang ghi đè lên tạo ra và phá hủy hành động và tôi có đã thêm một hành động khác có tên get_token. Tôi thêm tuyến đường cho nó như hình dưới đây:

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' 

Nhưng tôi nhận được errror sau khi tôi đang cố gắng để truy cập phương pháp get_token;

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

Cách thêm tuyến cho hành động get_token.

Cảm ơn trước

Trả lời

19

Bạn cần phạm vi các tuyến đường trong lập mưu như vậy:

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

Điều đó sẽ cho phép bạn gọi http://your-url/get_token để truy cập hành động đó.

+0

Tính năng này hoạt động. Cảm ơn. – Abhimanyu

+0

Vui vì tôi có thể giúp đỡ. – janders223

+0

Tôi đang nhận được lỗi định tuyến: hằng số không xác định SessionsController ở trên. Bất kỳ ý tưởng ? –

Các vấn đề liên quan