2009-11-10 3 views
0

J'ai cette ligne de code:"méthode non définie comprennent?" Pour request.user_agent

if request.user_agent.include?("iPhone") then 

Mais je suis de temps en temps à obtenir cette erreur:

"undefined method `include?' for nil:NilClass" 

Lors de la vérification enregistre l'erreur, il n'y a pas de "HTTP_USER_AGENT" pour l'utilisateur qui reçoit l'erreur.

Alors, comment puis-je corriger cette ligne afin qu'elle ne génère pas d'erreur s'il n'y a pas HTTP_USER_AGENT?

Répondre

2

Pour Rails 2.3.xx, vous pouvez également utiliser des objets # essayer

request.user_agent.try(:include?, 'iphone')

Vérifiez here pour plus d'informations.

0

Vérifiez-le pour rien ou sauvez l'exception vous-même.

0

NSD a raison.

Vous pouvez également utiliser try comme raccourci:

request.user_agent.try(:include?, "iPhone") 

try n'erreur lorsque son récepteur est nulle, de sorte que vous pouvez les enchaîner, comme ceci:

foo.try(:bar).try(:baz) 
Questions connexes