2012-02-18 51 views
11

Tôi muốn hiển thị trang gốc khác nhau cho người dùng trong Rails.Trang khác cho người dùng đã đăng nhập và người dùng chưa đăng nhập tại gốc

tôi định nghĩa gốc:

root :to => 'welcome#index' 

Và sự kiểm soát hoan nghênh:

class WelcomeController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    end 

end 

Hiện nay nó là ok cho người dùng đăng nhập, nhưng chưa đăng nhập người dùng chuyển hướng đến/người dùng/sign_in

Tôi muốn hiển thị trang gốc tĩnh và không chuyển hướng.

+1

Xóa phần trước của bạn và thêm logic vào phương pháp chỉ mục để xác định nội dung hiển thị dựa trên việc họ có đăng nhập hay không. ? –

+0

@MarcTalbot có, là nó có thể thực hiện trong routes.rb? –

+1

Câu hỏi chính xác này đã được trả lời tại đây http://stackoverflow.com/questions/8888289/rails-3-w-devise-how-to-set-two-separate-homepages-based-on-whether-the-user- i/8888513 # 8888513 –

Trả lời

2

Câu trả lời này sẽ hoạt động. Điều này đã được đăng trên trang Bradley liên kết.

Đặt điều này trong bộ điều khiển Chào mừng của bạn.

def index 
    if authenticate_user? 
    redirect_to :controller=>'dashboard', :action => 'index' 
    else 
    redirect_to '/public/example_html_file.html' 
    end 
end 
2

Trong routes.rb của bạn:

authenticated do 
    root :to => 'welcome#index' 
end 

root :to => 'home#static_page' 

này sẽ đảm bảo rằng root_url cho tất cả người dùng xác thực là welcome#index

Đối với các bạn tham khảo: https://github.com/plataformatec/devise/pull/1147

+0

Điều này không hoạt động trong Rails 4 nữa, hãy thử: đã xác thực: người dùng thực hiện gốc đến: 'dashboard # index', như: authenticated_root kết thúc root to: 'landing_page # index', như: public_root – ardochhigh

23

Câu trả lời, gợi ý của Puneet Goyal sẽ không hoạt động trong Rails 4. Xem this. Giải pháp là sử dụng bí danh cho một trong hai tuyến đường như sau:

authenticated do 
    root :to => 'welcome#index', as: :authenticated 
end 

root :to => 'home#static_page' 
+1

Jose Valim thảo luận giải pháp này trong vấn đề Devise [ở đây] (https://github.com/plataformatec/devise/issues/2393#issuecomment-17298414) –

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