ヘイヤみんな。だから私はこのクーリオのアイデアについて考えました、あなたがログインしているならあなたはある種のダッシュボードを手に入れます、そうでなければあなたは情報/ログイン/サインアップページを手に入れます..それで私はそれをどのように行うのですか..
私は主にルートでこれをやりたい=
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では、 Request Based Contraints を使用して、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
それが役に立てば幸い。
deviseのbeforeフィルターを使用していますか?
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 %>