如果用户未登录,则Rails路由为静态登录页面(Devise)

时间:2018-11-07 19:22:56

标签: ruby-on-rails devise

在我的应用程序中,我使用的是Devise身份验证gem,它确实运行良好。我还建立了一个静态登录页面,该页面当前位于/public目录中。

我当然可以浏览到localhost:3000/landing并查看页面(按照下面的路线),但是我想实现的目标却似乎无法弄清楚如何设置我的routes.rb文件因此landing.html文件是根目录,但是当用户登录时,他们的根目录将变成companies#index

任何帮助,不胜感激!

这是我的routes.rb文件

Rails.application.routes.draw do

  devise_for :users
  get 'dashboard/index'

  get '/landing', :to => redirect('/landing.html')

  root 'companies#index'

  resources :companies do
    resources :shareholders
    resources :captables do
      post :subscribe_to_captable
      resources :events do
        post :lock_event
        post :unlock_event
        resources :transactions
      end
    end
  end
end

这是我的application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :authenticate_user!
end

1 个答案:

答案 0 :(得分:1)

一种方法是将重定向放入您的CompaniesController.rb index方法中。

CompanesController.rb(或任何被称为)

def index
  unless user_signed_in?
    redirect_to landing_pages_path (or whatever the name of the route is)
  end
end

然后在routes.rb文件中更改路由。

get '/landing', to: 'companies#landing' * change companies here to the name of the controller holding the landing page's method if it is not in the companies controller.