2015-11-17 3 views
0

Я использую Rails 4 и хочу иметь целевую страницу, на которой пользователи могут выбирать, чтобы войти или зарегистрироваться. Проблема, которую я имею в настоящее время, заключается в том, что маршруты продолжают направлять меня обратно в sign_in.Devise Landing Page

Маршруты

Rails.application.routes.draw do 

    get 'home/index' 

    root 'home#index' 

    devise_for :people 

HomeController

class HomeController < ApplicationController 
    skip_before_action :authenticate_user! 

    def index 
    end 
end 

PeopleController

class PeopleController < ApplicationController 

    before_filter :set_person, only: [:show, :edit, :update, :destroy] 
    before_filter :authenticate_person! 

    respond_to :html 

Терминал Выход

Started GET "/" for 127.0.0.1 at 2015-11-17 22:28:51 +1100 
    ActiveRecord::SchemaMigration Load (0.7ms) SELECT "schema_migrations".* FROM "schema_migrations" 
Processing by HomeController#index as HTML 
Completed 401 Unauthorized in 20ms (ActiveRecord: 0.0ms) 

ответ

1

Pro совет: Избавиться от before_action :authenticate_user! в контроллерах, и использовать following routes:

#config/routes.rb 
    authenticated :user do 
    root 'home#dashboard', as: :root #-> if user is logged in 
    resources :controller #-> ONLY available for logged in users 
    end 

    unauthenticated :user do 
    root 'home#index', as: :unauthenticated #-> if user is not logged in 
    end 

Если пользователь аутентифицирован, authenticated маршруты будут представлены, если не unauthenticated маршруты покажет.

Важно отметить, что authenticated :user означает, что эти маршруты будут только будет доступна, когда пользователь вошел в систему. authenticate :user позволит пользователю просматривать маршруты, если не вошли в систему, но будет перенаправлен на sign in как у вас есть в настоящее время.

+0

так я реализовали выше, и это, кажется, показывая мне целевую страницу, хотя, если я перейти на страницу предварительного войти в это говорит мне, что маршрут не существует –

+0

devise_for: люди прошедших проверку подлинности: пользователь сделать корень «дома # приборной панели», как:: корень # -> если пользователь вошел в системе # -> доступны только для зарегистрированных пользователей ресурсов: люди ресурсов: центры ресурсов: store_configs ресурсов: заказы ресурсов: menu_items конец не прошедший проверку: пользователь делает root 'home # in dex ', as:: unauthenticated # ->, если пользователь не зарегистрирован end –

Смежные вопросы