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?

È stato utile?

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
scroll top