2011-10-25 38 views

Trả lời

2

Bạn có thể đặt logic tùy chỉnh thành các tuyến ... nhưng như avenger đề xuất - "current_user" sẽ không hoạt động do khi tệp tuyến đường được tải. Đôi khi chúng tôi sử dụng logic trong định tuyến của chúng tôi (ví dụ: thiết lập các tuyến đường chỉ khả dụng nếu RAILS_ENV == 'phát triển').

Những gì bạn có thể muốn là một before_filter vào "anonymous_page" ví dụ:

before_filter :redirect_if_logged_in, :only => :anonymous_page 

def redirect_if_logged_in 
    redirect_to logged_in_page if current_user.present? 
end 
2

Điều đó không làm việc như thế. Các tuyến đường được đọc/tạo khi khởi động máy chủ, không phải theo yêu cầu. Logic như vậy bạn phải đưa vào bộ điều khiển.

+0

Lưu ý: điều đó tạo ra điều gì đó để làm cho phép thuật xảy ra ở đây: https://github.com/plataformatec/devise/wiki/How-To:-Define-a-different-root-route-for-logged-in- người dùng ngoài – Jonathan

0

Bạn có thể sử dụng đá quý giải phóng mặt bằng để làm những gì bạn đang suy nghĩ. Từ tài liệu giải phóng mặt bằng:

Blog::Application.routes.draw do 
    constraints Clearance::Constraints::SignedIn.new { |user| user.admin? } do 
    root to: 'admin' 
    end 

    constraints Clearance::Constraints::SignedIn.new do 
    root to: 'dashboard' 
    end 

    constraints Clearance::Constraints::SignedOut.new do 
    root to: 'marketing' 
    end 
end 

Điều này làm việc vì việc giải phóng mặt bằng tự thêm vào ngăn xếp trung gian, làm cho trạng thái đăng nhập khả dụng trước khi các tuyến đường được xử lý.

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