Ruby on rails 登录rails应用程序之前的不同主页,而不是登录页面

Ruby on rails 登录rails应用程序之前的不同主页,而不是登录页面,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,在这里,每当我尝试打开localhost:3000时,它都会自动更改为localhost:3000/users/sign_in,并显示登录表单get。但是当我输入localhost:3000时,我不想要这个登录表单。我只是想所有的内容,除了形式在第一次和当我按下登录或注册链接,对应的形式应该只显示 以下是呈现主页的应用程序控制器的代码:- protect_from_forgery with: :exception before_action :authenticate_user! la

在这里,每当我尝试打开localhost:3000时,它都会自动更改为localhost:3000/users/sign_in,并显示登录表单get。但是当我输入localhost:3000时,我不想要这个登录表单。我只是想所有的内容,除了形式在第一次和当我按下登录或注册链接,对应的形式应该只显示

以下是呈现主页的应用程序控制器的代码:-

 protect_from_forgery with: :exception
  before_action :authenticate_user!
  layout :layout_by_resource

  protected

  def layout_by_resource
    if !user_signed_in?
      "home"
    else
      "dashboard"
    end
  end
有人能帮我解决这个问题吗。我正在使用Desive gem进行用户登录。

要么(1)您的根url被设置为新会话页面,要么(2)您被重定向到新会话页面,因为您的根url由要求用户登录的操作之前的
保护

(1) 在
config/routes.rb
中,您可能已将根页面设置为新会话页面:

root to: "session#new"
(2) 如果没有,您将被重定向到远离根路由的位置

根路由指向什么?为了本例的目的,我们假设它指向
“home#index”

然后,您需要检查相应的控制器和控制器操作(在本例中为
HomeController#index
),以查看您是否在那里强制执行身份验证

下面是这样的:

# app/controllers/home_controller.rb

class HomeController < ApplicationController
  before_action :authenticate_user!

  def index
  end
end

很简单。您使用普通的主索引模板并重定向以登录Desive。如果您希望表单位于同一页上,请使用render。
当您转到localhost:3000并被重定向时,您有root用户要登录,或者有一些控制器代码在未登录时重定向到登录。只需更改+

显示呈现此主页(根页面)的控制器代码即可。好的,我已包括我的应用程序控制器代码主页的操作名称是什么?
# app/controllers/home_controller.rb

class HomeController < ApplicationController
  before_action :authenticate_user!

  def index
  end
end
# app/controllers/home_controller.rb

class HomeController < ApplicationController
  before_action :authenticate_user!, except: :index

  def index
  end
end