2011-10-25 14 views
5

Özel bir mantığı route.rb içine koymak tamam mı? ÖrneğinRaylar rotaları mantık

: böyle çalışmıyor

unless current_user 
    root :to => anonymous_page 
else 
    root :to => logged_in_page 
end 

cevap

2

, özel mantığı rotalara yerleştirebilirsiniz ... ama öfke önerisi olarak - "current_user", yol dosyası yüklendiğinde çalışmayacaktır. Bazen mantığımızı bizim routefile'de kullanırız (örneğin, sadece RAILS_ENV == 'development' ise mevcut olan rotaları kurmak).

Ne muhtemelen istediğiniz bir before_filter "anonymous_page" örneğin üzerindedir:

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

. Yollar, istek başına değil, sunucu başlangıcında okunur/oluşturulur. Bu mantık kontrolörlere koymanız gerekiyor.

+0

Not: Buradaki sihir, burada bir şey yapmak için bir şey yapar: https://github.com/plataformatec/devise/wiki/How-To:-Define-a-different-root-route-for-logged-in- dışı kullanıcılar – Jonathan

0

Sen ne düşündüğünü yapmak temizleme mücevher kullanabilirsiniz. boşluk belgelerden; boşluk ortakatmanı kendisini ekler, çünkü bu işleri

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 

, yolları işlenir mevcut önce statüsünde imzalanan kazanmış olmak.