35

やあみんな。だから私はこのクーリオのアイデアについて考えました、あなたがログインしているならあなたはある種のダッシュボードを手に入れます、そうでなければあなたは情報/ログイン/サインアップページを手に入れます..それで私はそれをどのように行うのですか..

私は主にルートでこれをやりたい=のようなものではありません


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

前もって感謝します!

/オルフニールセン

4

5 に答える 5

80

あなたがこれを探していたかもしれないと思います:

authenticated :user do
  root :to => "dashboard#show"
end

root :to => "devise/sessions#new"

注:認証*d*です

于 2010-12-08T10:39:35.043 に答える
25

私も自分のアプリでこれが欲しかったのですが、これが私が思いついたものです。

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ます。

お役に立てれば。

于 2010-10-02T17:01:21.907 に答える
21

私は同じ問題を抱えており、これで解決しました:

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

それが役に立てば幸い。

于 2012-05-14T18:43:44.243 に答える
4

フィルタの前にdeviseを使用していますか?

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

デフォルトのログインビューを変更して、必要な情報/ログイン/サインアップ情報が表示されるようにしてみませんか。

于 2010-09-24T22:05:54.583 に答える
0

現在、アプリケーションレイアウトファイルで使用しているものは次のとおりです。まだ部分的に分割していません:

            <% 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 %>
于 2010-09-25T07:09:23.503 に答える