Получение "неопределенного метода` include? '"Для request.user_agent - PullRequest
0 голосов
/ 10 ноября 2009

У меня есть эта строка кода:

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

Но иногда я получаю эту ошибку:

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

При проверке журналов об ошибке не существует "HTTP_USER_AGENT" для пользователя, который получает ошибку.

Так, как я могу исправить эту строку, чтобы она не выдавала ошибку, если нет HTTP_USER_AGENT?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2009

Для Rails 2.3.xx вы также можете использовать Object # try

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

Проверьте здесь для получения дополнительной информации.

0 голосов
/ 10 ноября 2009

НРД прав.

Вы также можете использовать try как короткий путь:

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

try не выдаст ошибку, когда его получатель равен нулю, поэтому вы можете связать их вместе, например так:

foo.try(:bar).try(:baz)
0 голосов
/ 10 ноября 2009

Проверьте это на ноль или спасите исключение самостоятельно.

...