2016-11-08 6 views
0

Je veux seulement saisir le premier message flash. Je dois envoyer ce message à un objet. Jusqu'à présent, jeSélection du premier message flash dans Rails

flash.first.last if flash.present? and flash.first.present? 

Dans certains cas, le flash n'existe pas du tout, donc je dois d'abord vérifier qu'il existe, voir si elle a un message. Honnêtement, je ne l'aime pas. Est-ce que le FlashHash ou Rails ont une méthode qui fait ce comportement out-of-the-box? Y a-t-il une façon plus propre de faire cela? Merci.

Répondre

1

Si vous êtes à la recherche d'un moyen de le raccourcir, vous pouvez utiliser une navigation sûre:

flash.try(:first).try(:last) # Ruby < 2.3 
flash&.first&.last   # Ruby >= 2.3 

Pour la liste des méthodes de hachage flash, consultez la documentation ActionDispatch::Flash::FlashHash.

+0

Je ne sais pas ce que je pense de l'utilisation de la méthode 'try'. Cela m'avait traversé l'esprit. Je vais y réfléchir un peu plus. Merci. – jason328

+0

@ jason328 Je ne comprends pas vraiment quel est votre comportement attendu. La documentation est là, et elle n'a certainement pas la fonctionnalité '.first.last' sortie de la boîte :) –

+0

Non, vous avez raison. J'espérais juste quelque chose de plus. C'est la vie. – jason328