Ottenere “metodo non definito` include? '”Per request.user_agent
-
19-09-2019 - |
Domanda
Ho questa riga di codice:
if request.user_agent.include?("iPhone") then
Ma io sono a volte questo errore:
"undefined method `include?' for nil:NilClass"
Quando si controlla i registri su un errore, non c'è un "HTTP_USER_AGENT
" per l'utente che sta ottenendo l'errore.
Quindi, come posso risolvere il problema che la linea in modo da non gettare un errore se non c'è una HTTP_USER_AGENT
?
Soluzione
Per Rails 2.3.xx è anche possibile utilizzare l'oggetto # try
request.user_agent.try(:include?, 'iphone')
qui per ulteriori informazioni.
Altri suggerimenti
Controlla per nulla o salvare l'eccezione da soli.
NSD è giusto.
Si potrebbe anche usare try
come scorciatoia:
request.user_agent.try(:include?, "iPhone")
try
non sarà errore quando il suo ricevitore è pari a zero, in modo da poterli concatenare insieme, in questo modo:
foo.try(:bar).try(:baz)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow