[RUBY] Transition entre les utilisateurs connectés et les utilisateurs non connectés à l'aide de l'appareil

Qu'est-ce que tu veux faire

J'ai défini root_path sur quelque chose qui ressemble à un ** écran d'accueil ** que je souhaite afficher après la connexion. Les utilisateurs qui ne sont pas connectés seront configurés pour accéder à la ** page d'introduction de l'application **

La description

Comme écrit sur cette page, il utilise ** devise **. Si vous n'avez pas encore installé l'appareil, veuillez le faire avant de revenir à cette page. Passons maintenant au sujet principal Tout d'abord, modifiez la description du contrôleur.

photos_controller.rb


class PhotosController < ApplicationController
  before_action :move_to_index #Ajouter ici
  
  def index    
  end
#Ajoutez ce qui suit à partir d'ici
  private

  def move_to_index
    unless user_signed_in?
      redirect_to controller: :homes, action: :index
    end
  end

end

J'expliquerai ce que tu fais d'en haut before_action :move_to_index before_action est utilisé pour faire quelque chose avant que toutes les actions du contrôleur ne soient exécutées. Une méthode appelée move_to_index est spécifiée pour cette before_action. Puisqu'il s'agit d'une méthode, la description ici est différente pour tout le monde Alors, où définissez-vous cette méthode? ?? Je l'expliquerai plus tard.

private Une méthode qui ne peut pas être appelée depuis l'extérieur de la classe. Dans Ruby, le code suivant décrit comme privé est une méthode privée. Mon interprétation est que c'est une méthode qui ne peut être utilisée que dans ce contrôleur. Je suis désolé si c'est différent ...

def move_to_index Move_to_index est défini ici. Cela conduit à before_action: move_to_index plus tôt. Voyons ce que fait le move_to_index

unless user_signed_in? user_signed_in? est une méthode d'assistance qui peut être utilisée en insérant un appareil ** Déterminez si l'utilisateur est connecté ** Cela signifie que s'il n'y a pas à moins que ~ là Lorsque ce mot vient, si vous n'êtes pas connecté, passez à la ligne suivante avec ~

redirect_to controller: :homes, action: :index Parce que la phrase est un peu longue Tout d'abord, faites attention à ** redirect_to ** Ceci est une méthode ** qui peut passer à l'URL spécifiée ** Alors

controller.rb


redirect_to "http://www.○○○○.com"

Mais tu peux

controller.rb


redirect_to root_path

Vous pouvez également spécifier le nom du préfixe comme

controller.rb


redirect_to controller: :homes, action: :index

Vous pouvez également spécifier l'action du dernier contrôleur spécifié

Vous pouvez faire d'autres choses, alors recherchez-les.

C'est le flux ** Lisez d'abord la méthode mobe_to_index avec before_action avant de charger l'index. Si l'utilisateur n'est pas connecté, vous pouvez le définir en passant à ici. ** **

routage

Avec le contrôleur

redirect_to controller: :homes, action: :index

Est décrit à la fin L'action d'index du contrôleur domotique est appelée

routes.rb


get '/homes/home', to:'homes#index'

Décrire ** / homes / home est la spécification du nom de l'URL ** スクリーンショット 2020-10-14 15.13.00.png Ça ressemble à ça. Et ** homes # index ** Spécifie l'action d'index pour le contrôleur domotique C'est tout

Recommended Posts

Transition entre les utilisateurs connectés et les utilisateurs non connectés à l'aide de l'appareil