0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ログイン前にトップページを表示させる方法

Last updated at Posted at 2021-08-29

内容

アプリを作成するにあたり、ログインする前でもトップページが表示されるように設定しました。

解決法

deviseを使用してログイン機能をつけた場合、

application_controller.rb
before_action :authenticate_user!

を記述することで全てのコントローラーでアクションが動く前にログインしているかしていないかを判断され、ログインしていなければログインページにリダイレクトされるようになります。

routes.rb
root "tops#index"

この状態では、root_pathにトップページを指定してもログインページに飛ばされてしまいます。

どうにかしてtopsコントローラーでは before_action :authenticate_user! を無効化したいですね。
そんな時は、skip_before_action を使います。

tops_controller.rb
class TopsController < ApplicationController
  skip_before_action :authenticate_user!, only: %i[index]
end

これによって、topsコントローラーでは authenticate_user! が無効化されます。
さらに、only: %i[アクション名] でそのアクションでだけ無効化することもできます。

これで、未ログインでもトップページに遷移することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?