Придумайте залогинившись в корневой маршрут рельсов 3 - PullRequest
35 голосов
/ 25 сентября 2010

Хейя ребята . Так что я подумал об этой идее Coolio, если вы вошли в систему, то вы получите какую-то панель управления, в противном случае вы получите страницу информации / входа / регистрации .. Так как мне это сделать ..

В основном я хочу сделать это в Routes = не что-то вроде


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

спасибо заранее!

/ Олуф Нильсен

Ответы [ 5 ]

80 голосов
/ 08 декабря 2010

Думаю, вы искали это:

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

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

Примечание: это аутентификация * d *

25 голосов
/ 02 октября 2010

Я тоже хотел это в своем приложении, вот что я придумал.

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, но может быть изменено для поддержки вашей собственной реализации.

С помощью вышеуказанных root_path или / будет перенаправлено действие WelcomeController#index для запросов без аутентификации.Когда пользователь вошел в систему, тот же root_path направит на UsersController#dashboard.

Надеюсь, это поможет.

21 голосов
/ 14 мая 2012

У меня та же проблема, и я решил ее следующим образом:

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

Надеюсь, это поможет.

4 голосов
/ 25 сентября 2010

используете ли вы фильтры devise before?

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

Почему бы вам не попробовать изменить вход в систему по умолчанию, чтобы получить нужную информацию info / login / signup.

0 голосов
/ 25 сентября 2010

Вот что я сейчас использую в файле макета приложения.Еще не разбили его на частичные:

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