代码之家  ›  专栏  ›  技术社区  ›  Oluf Nielsen

设计登录根路由rails 3

  •  35
  • Oluf Nielsen  · 技术社区  · 15 年前

    伙计们 . 所以我想到了这个coolio的主意,如果你登录了,那么你会得到某种仪表板,否则你会得到一个信息/登录/注册页面。。那我该怎么做。。

    我主要是想在路线上做这件事

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

    提前谢谢!

    /奥卢夫尼尔森

    5 回复  |  直到 15 年前
        1
  •  80
  •   Chris Joe Lalgee    13 年前

    你可能在找这个:

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

    注:为*d*

        2
  •  25
  •   Shayne Sweeney    15 年前

    我也想在我的应用程序里看到这个,这是我想到的。

    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中,您可以使用 Request Based Contraints 动态映射 root 路线。上面的解决方案适用于designe认证gem,但是可以修改以支持您自己的实现。

    与上述 root_path / 将路由到 WelcomeController#index 未验证请求的操作。当用户登录到同一个 根路径 UsersController#dashboard .

    希望这有帮助。

        3
  •  21
  •   Josh Darnell Eric Parshall    13 年前

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

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

    希望有帮助。

        4
  •  4
  •   BaroqueBobcat    15 年前

    你用的是devise的前置过滤器吗?

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

    你为什么不尝试改变默认的登录视图,这样他们就有了你想要的信息/登录/注册信息。

        5
  •  0
  •   Joost Schuur    15 年前

    下面是我现在在应用程序布局文件中使用的内容。我还没把它分成几个部分:

                <% 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 %>