Question

Si vous allez à Twitter.com lorsque vous n'êtes pas connecté, vous verrez la page de marketing avec le connexion et champs d'enregistrement.

Cependant, si vous y allez quand vous êtes connecté, vous verrez votre flux d'activité pour votre poignée Twitter.

Je sais une façon de le faire dans Rails est d'avoir un home/index pour l'utilisateurs connectés, et il suffit d'utiliser public/index.html pour le site de marketing. Mais Twitter n'utilise pas public/index.html, donc je me demande comment ils le font?

Est-ce juste un cas simple d'avoir une route racine, mais une instruction if qui affiche deux pages différentes en fonction de l'utilisateur est connecté ou non dans?

Ou est-il une autre astuce de routage plus de fantaisie que je peux utiliser pour le faire?

S'il est juste un if-statement, qui semble un peu hacky ... pas?

Merci.

Était-ce utile?

Autres conseils

Par des méthodes de régulation par défaut routes spécifiques de poignée rendent une vue qui a un nom correspondant (liens itinéraire home / index au contrôleur de la maison et l'action d'index qui à son tour rend le index.html.erb vue intérieur de l'app / views / home ).

Cependant, à l'intérieur de la méthode du contrôleur qui gère la demande de racine, vous pouvez simplement rendre une vision différente basée sur le fait qu'un utilisateur est connecté ou non.

Vous auriez probablement quelque chose comme ceci:

class HomeController
  def index
   ...
   if user_logged_in?
      render "logged_in_user"
   # else it will render the index view by default
   end
end

end

Dans ce cas, « logged_in_user » serait un point de vue différent (modèle ou fichier html.erb) de l'application / vues / dossier de base.

Pour plus d'informations jeter un coup d'oeil ici: Rails de guidage rendu

il peut une sorte de redirection pour ne pas les utilisateurs connectés à un contrôleur différent, la vérification de la session de l'utilisateur peut être fait dans before_filter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top