J'ai vu ce code dans un tutoriel des rails que je fais
def access_denied redirect_to login_path, :notice => "Please log in to continue" and return false end
4 Réponses :
Les C'est équivalent à faire cela: p> Ce n'est pas exactement la même chose car avec le "et" il ne renverrait que false si la méthode Le
Si vous voulez jamais ajouter un retour qui s'exécute toujours, mais vous N'EST P'EST B> CONSULIER que la première expression reviendra toujours non fausse, vous pouvez également utiliser un point-virgule au lieu de et code >, comme ceci: argument do_something, argument; retourner faux code>
Ce type de construction utilisé pour être utilisé avec un filtre lorsque des valeurs de retour de filtre étaient attendues. Le Donc, si un contrôleur ressemblait à ceci: p> Aucune des actions du contrôleur ne fonctionnerait; Cette méthode était probablement conçue pour être appelée de em> un filtre, comme: p> ces jours de retour de filtre Les valeurs de retour sont ignorées. p> Il pourrait être utilisé comme méthode normale dans une action pour arrêter de traiter l'action et le retour après la redirection, donc aucune autre logique / rendu / etc. est exécuté à l'intérieur du contrôleur. P> p> false code> arrêterait le traitement normal de la demande.
redirect_to login_path ,: Avis => "Veuillez vous connecter pour continuer" CODE> est une expression normale dans RUBY qui ne renvoie pas faux (ou nil, voir le code source ), donc l'exécution du programme continue (pour vérifier la deuxième partie après et ) et retour false code> peut être exécuté. p>
Documentation sur les opérateurs: sous le "défini? et, ou, et, et, et et, et et non "Section
Utiliser Le blog obtient uniquement dans votre exemple: p> Ils utilisent simplement Il doit écrire le code plus compact de manière compacte sur une ligne. p> Cependant, il est également utile pour une action du contrôleur où vous risquez peut-être sur la base de conditionnels et que vous ne voulez pas obtenir de rails "Plusieurs rendoirs" : P> et code> est utile pour chaînonner des opérations liées ensemble jusqu'à ce que l'une d'entre elles renvoie nil code> ou false code>. Vous pouvez l'utiliser comme vous l'avez montré dans votre question ou vous pouvez également l'utiliser sur le court-circuit la ligne de code. P> .publish! code> appelé dessus si le recherche_by_id code> a été réussi. p> if something
render :partial => 'some_partial' and return
end
Oh, je pensais que tu demandais pourquoi i> il serait utilisé. Dans tous les cas, s'il est utilisé par un filtre tel que décrit dans ma réponse, soyez très méfiant.