嘿,伙计们。所以我想到了这个coolio的想法,如果您已登录,那么您将获得某种仪表板,否则您将获得信息/登录/注册页面..那我该怎么做..
我主要想在 Routes 中执行此操作=而不是类似
def index
if current_user.present?
render :action => 'logged_in'
else
render :action => 'logged_out'
end
end
提前致谢!
/ 奥鲁夫尼尔森
嘿,伙计们。所以我想到了这个coolio的想法,如果您已登录,那么您将获得某种仪表板,否则您将获得信息/登录/注册页面..那我该怎么做..
我主要想在 Routes 中执行此操作=而不是类似
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"
注意:它是经过身份验证的*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 中,您可以使用基于请求的约束来动态映射您的root路线。上面的解决方案适用于 Devise 身份验证 gem,但可以修改以支持您自己的实现。
使用上述root_path或/将路由到WelcomeController#index未经身份验证的请求的操作。当用户登录时,同样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
希望能帮助到你。
你在使用设计之前的过滤器吗?
class FooController < ActionController::Base
before_filter :authenticate_user!
...
您为什么不尝试更改默认登录视图,以便它们拥有您想要的信息/登录/注册信息。
这是我现在在我的应用程序布局文件中使用的内容。还没有把它分解成部分:
<% 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 %>