deviselogin的根路线导轨3

Heyya 伙计 。 所以我想到这个coolio的想法,如果你login,那么你得到某种仪表盘,否则你会得到一个信息/login/注册页面..所以我怎么做..

我主要是想在路由中做这个=不是这样的

def index if current_user.present? render :action => 'logged_in' else render :action => 'logged_out' end end 

提前致谢!

/奥卢夫尼尔森

想想你可能一直在寻找这个:

 authenticated :user do root :to => "dashboard#show" end root :to => "devise/sessions#new" 

注意:它是validation* d *

我也想在我的应用程序中,这是我想出了。

 MyCoolioApp::Application.routes.draw do root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? } root :to => 'welcome#index' get "/" => 'users#dashboard', :as => "user_root" # .. end 

在Rails 3中,您可以使用基于请求的约束来dynamic地映射root路由。 上面的解决scheme适用于Deviseauthenticationgem,但可以修改以支持您自己的实现。

使用上面的root_path/将路由到未经身份validation的请求的WelcomeController#index操作。 当用户login时,相同的root_path将路由到UsersController#dashboard

希望这可以帮助。

我有同样的问题,我解决了这个问题:

 authenticated :user do root :to => "wathever#index" end unauthenticated :user do devise_scope :user do get "/" => "devise/sessions#new" end end 

希望能帮助到你。

你是否使用filter之前的devise?

 class FooController < ActionController::Base before_filter :authenticate_user! ... 

你为什么不尝试改变默认的login视图,使他们有你想要的信息/login/注册信息。

这是我现在在我的应用程序布局文件中使用的。 还没有把它分解成部分:

  <% if user_signed_in? %> <a href="/profile"><%= current_user.email %></a> | <%= link_to "Logout", destroy_user_session_path %> <% else %> <%= link_to "Login", new_user_session_path %> | <%= link_to "Register", new_user_registration_path %> <% end %>