2016-11-08 45 views
0

我只想抓取第一个Flash消息。我必须将此消息发送给对象。到目前为止,我有在Rails中选择第一个Flash消息

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

在某些情况下,闪光灯不存在一样,所以我必须首先检查它的存在,然后看看它是否有消息。我真的不喜欢它。 FlashHash或Rails是否有一种可以立即执行此行为的方法?有没有更干净的方法来做到这一点?谢谢。

回答

1

如果你正在寻找一种方式,以缩短它,你可以使用安全导航:

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

对于闪存哈希方法列表,请参阅ActionDispatch::Flash::FlashHash文档。

+0

我不知道如何使用'try'方法。它超出了我的想法。我会再考虑一下。谢谢。 – jason328

+0

@ jason328我真的不明白你的预期行为是什么。文档在那里,它肯定没有''.first.last'功能开箱即用:) –

+0

不,你是对的。我只是希望有更多的东西。这就是生活。 – jason328